2010-04-05 3 views
0

Как использовать displayObjects в качестве фреймов анимации?
У меня в моей библиотеке шесть символов. Я хочу анимировать с помощью таймера. Преимуществом будет способность изменять скорость анимации и устранение беспорядочной шкалы времени.DisplayObjects как кадры анимации? AS3

Единственным недостатком является первоначальная настройка объектов в библиотеке. Я пробовал шаблоны проектирования переключателей/случаев, visible = true и z-depth, но я не могу заставить его работать правильно. Есть ответы?

//setup code 
var timer:Timer = new Timer(100, 20); 
timer.addEventListener(TimerEvent.TIMER, countdown); 
function countdown(event:TimerEvent) { 
    myText.text = String(0 + timer.currentCount); 
} 
timer.start(); 

var frame1:Frame1 = new Frame1; 
addChild(frame1); 
//frame1.visible = false 

var frame2:Frame2 = new Frame2; 
addChild(frame2); 
//frame1.visible = false 

var frame3:Frame3 = new Frame3; 
addChild(frame3); 
//frame1.visible = false 

var frame4:Frame4 = new Frame4; 
addChild(frame4); 
//frame1.visible = false 

var frame5:Frame5 = new Frame5; 
addChild(frame5); 
//frame1.visible = false 

var frame6:Frame6 = new Frame6; 
addChild(frame6); 
//frame1.visible = false 
+0

Я знаю, что «временная шкала» обычно нахмурилась в мире вспышек, особенно новичками. Это может стать бесполезным, когда вы начнете вспять код на всем протяжении. Но похоже, что вы боретесь с тем, как работает вспышка. Если вам действительно нужно изменить скорость анимации во время выполнения, это может быть вариант (хотя вы также можете управлять линией воспроизведения временной шкалы с помощью кода). Если вы не можете или не хотите использовать Flash IDE, это путь. Но если вы этого не сделаете, вы потеряете всю точку отсчета. Пусть художники/дизайнеры делают то, что знают лучше, с инструментами, с которыми они знакомы. –

ответ

1

Нечто подобное. Это написано для удобства чтения, а не для производительности или расширяемости, но должно помочь вам на правильном пути.

var frames:Array = [ 
    new Frame1(), 
    new Frame2(), 
    new Frame3(), 
    new Frame4(), 
    new Frame5(), 
    new Frame6() 
]; 

for each (var frame:Sprite in frames) { 
    addChild(frame); 
} 

var timer:Timer = new Timer(100); 
timer.addEventListener(TimerEvent.TIMER, countdown); 
function countdown(event:TimerEvent) { 
    myText.text = String(0 + timer.currentCount); 
    var currentFrame:int = timer.currentCount % frames.length; 
    for (var i:int = 0; i < frames.length; ++i) { 
     frames[i].visible = (i == currentFrame); 
    } 
} 
timer.start(); 
+0

Спасибо. Это то, что мне нужно. – 2010-04-05 20:39:32

Смежные вопросы