![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Увидел такой эффект в одной игрушке, не помню в какой, и он мне очень понравился, суть в том, что есть таймер тикающий обратно и четыре "уголка", каждые 250 мс они должны подсвечиваться цветом. Проблема в логике - никак не могу сообразить как заставить поочередно подсвечивать эти уголки .Помогите пожалуйста
. Выглядит это примерно так :
__________________
Не стыдно спросить, стыдно не знать ! |
|
|||||
|
Регистрация: Jul 2007
Сообщений: 393
|
Уголок подсвечен, если его номер<=msec/250
msec=0...999 |
|
|||||
|
[+1 13.12.12]
[++1 13.12.12] Регистрация: Aug 2012
Сообщений: 145
|
точно не уверен но может с помощью оператора if
ну если бы я делал такое то я бы попробовал сделать такое с помощью if и enter frame. то есть addEventListener(Event.ENTER_FRAME, onEnterFrame); function onEnterFrame(e:Event):void { if ()//если переменная отвечающая за время равна чемуто то... { //и выполняет действия } и уверен есть код занимающий меньше строк.) вроде ещё импортировать надо) и лучше сделать это "отдельно" то есть как только пройдёт 1 сек это действие сразу повторяется |
|
|||||
|
набросал по-бустрому. Примерно так.
package { import flash.display.Sprite; import flash.events.TimerEvent; import flash.utils.Timer; public class CornerTimer extends Sprite { private var _timer: Timer; private var _corners: Array = []; private var _cornerOffset: int = 50; public function CornerTimer() { _timer = new Timer(250); _timer.addEventListener(TimerEvent.TIMER, onTimer); _timer.start(); var c1:Corner = new Corner(); c1.x = 100; c1.y = 100; addChild(c1); var c2:Corner = new Corner(); c2.x = 100 + _cornerOffset; c2.y = 100; addChild(c2); var c3:Corner = new Corner(); c3.x = 100 + _cornerOffset; c3.y = 100 + _cornerOffset; addChild(c3); var c4:Corner = new Corner(); c4.x = 100; c4.y = 100 + _cornerOffset; addChild(c4); _corners.push(c1, c2, c3, c4); } private function onTimer(e:TimerEvent):void { var highlightIndex:int = _timer.currentCount % 4; var allHighlighted:Boolean = true; for each (var corner:Corner in _corners) { if (corner.highlighted == false) { allHighlighted = false; break; } } if (allHighlighted) { for each (corner in _corners) { corner.highlighted = false; } _timer.reset(); _timer.start(); return; } _corners[highlightIndex].highlighted = true; } } } import flash.display.Sprite; internal class Corner extends Sprite { private var _highlighted:Boolean = false; public function Corner() { drawBlack(); } private function drawRed():void { graphics.clear(); graphics.beginFill(0xFF0000); graphics.drawCircle(0, 0, 10); graphics.endFill(); } private function drawBlack():void { graphics.clear(); graphics.beginFill(0x000000); graphics.drawCircle(0, 0, 10); graphics.endFill(); } public function set highlighted(value:Boolean):void { _highlighted = value; if (value) { drawRed(); } else { drawBlack(); } } public function get highlighted():Boolean { return _highlighted; } } |
|
|||||
|
caseyryan Спасибо огромное, то, что нужно.
XMON тебе отдельное спасибо ![]()
__________________
Не стыдно спросить, стыдно не знать ! |
![]() |
![]() |
Часовой пояс GMT +4, время: 22:50. |
|
|
« Предыдущая тема | Следующая тема » |
|
|