Это не совсем возможно, нет.Перемещение от одного кадра к другому с использованием временной шкалы делает именно это, и поскольку объекты на временной шкале (и их состояния) не доступны для кода, пока вы уже там, вы не можете легко смотреть вперед, чтобы создать анимацию движения.Я бы сказал, что у вас есть два варианта, хотя я не могу сказать, что лучше, не зная, что существует во втором кадре.
1.Анимация временной шкалы
Вместо использования gotoAndStop
для перехода в совершенно другое состояние на кадре 2 используйте gotoAndPlay
, а затем создайте желаемую анимацию между двумя состояниями, которые вы хотите начать с кадра 2.Поместите ключевой кадр в конце вашей анимации, содержащий stop()
.
2.Забудьте о временной шкале
ActionScript 3 ориентирован на объекты и работает лучше всего, когда вы освобождаетесь от временной шкалы.Создайте содержимое кадра 2 как символ в библиотеке и установите для этого символа значение «Экспорт для ActionScript».Теперь вы можете прикрепить этот символ и применить к нему кодированную анимацию при нажатии на кнопку.Для основанной на коде анимации я настоятельно рекомендую использовать бесплатную библиотеку TweenMax или TweenLite, если у вас есть проблемы с размером файла.Они очень просты в использовании, гораздо более эффективны и более функциональны, чем встроенные классы анимации.Вы также можете использовать TimelineMax , чтобы сгруппировать несколько анимаций вместе и управлять ими как группой.
Например:
import com.greensock.TweenMax;
import com.greensock.TimelineMax;
myButton.addEventListener(MouseEvent.CLICK, gotoFrame02);
var frame2State:Frame2State;
function gotoFrame02(event:MouseEvent):void
{
//remove listener for memory management purposes
myButton.removeEventListener(MouseEvent.CLICK, gotoFrame02);
//create instance of your next state from the library
frame2State = new Frame2State(); //assuming that the class name you set for the symbol is Frame2State
addChild(frame2State);
//create timeline
var timeline:TimelineMax = new TimelineMax({onComplete:onTimelineComplete});
//add button fade down animation
timeline.append(new TweenMax(myButton,0.4,{alpha:0}));
//add content fade up animation
timeline.append(new TweenMax(frame2State,0.4,{alpha:1}));
timeline.play();
}
function onTimelineComplete():void
{
//remove button
removeChild(myButton);
myButton = null;
}