#actionscript-3 #class
#actionscript-3 #класс
Вопрос:
Я создал файл AS и использовал его как класс, внутри него я вызывал кнопки и изображения слайд-шоу.
После этого я решил создать вступление, переместив временную шкалу. Моя проблема в том, что все объекты отображаются с самого первого фрейма, есть ли способ запустить весь класс после определенного фрейма?
Код для справки:
package {
import flash.display.Loader;
import flash.net.URLRequest;
import flash.events.Event;
import flash.display.Sprite;
import flash.events.MouseEvent;
import flash.display.MovieClip;
public class play extends MovieClip {
private var loader:Loader = new Loader();
private var images:Array = ["img/Layer_1.jpg", "img/Layer_2.jpg", "img/Layer_3.jpg", "img/Layer_4.jpg", "img/Layer_5.jpg", "img/Layer_6.jpg", "img/Layer_7.jpg", "img/Layer_9.jpg", "img/Layer_10.jpg", "img/Layer_11.jpg", "img/Layer_12.jpg", "img/Layer_13.jpg", "img/Layer_14.jpg"];
private var triangleButton:triangle = new triangle;
private var squareButton:square = new square;
private var crossButton:cross = new cross;
private var circleButton:circle = new circle;
public function play() {
loadNextImage();
addChild(loader);
loader.x = 137;
loader.y = 65;
//Buttons
addChild(triangleButton);
triangleButton.width = 28;
triangleButton.scaleY = triangleButton.scaleX;
triangleButton.x = 804;
triangleButton.y = 107;
triangleButton.addEventListener(MouseEvent.CLICK, slideGames);
addChild(circleButton);
circleButton.width = 28;
circleButton.scaleY = circleButton.scaleX;
circleButton.x = 825;
circleButton.y = 130;
circleButton.addEventListener(MouseEvent.CLICK, slideGames);
addChild(crossButton);
crossButton.width = 28;
crossButton.scaleY = crossButton.scaleX;
crossButton.x = 804;
crossButton.y = 155;
crossButton.addEventListener(MouseEvent.CLICK, slideGames);
addChild(squareButton);
squareButton.width = 28;
squareButton.scaleY = squareButton.scaleX;
squareButton.x = 780;
squareButton.y = 130;
squareButton.addEventListener(MouseEvent.CLICK, slideGames);
}
public function slideGames(event:MouseEvent):void {
loadNextImage();
}
public function loadNextImage() : void {
// Increment the image
_imageIndex ;
// If we've reached the end of the array, start over
if (_imageIndex >= images.length) {
_imageIndex = 0;
}
// Now get the image source from the array and tell the loader to load it
var imageSource : String = images[_imageIndex] as String;
loader.load(new URLRequest(imageSource));
}
// Next image to display
protected var _imageIndex : int = -1;
}
}
Ответ №1:
Да, вместо того, чтобы инициализировать все в конструкторе вашего класса ( play()
), вы можете переместить его в другую функцию и вызвать ее из временной шкалы. Я предполагаю, что вы используете play
класс в качестве класса document.
Итак, вместо
public function play() {
вы бы переименовали его в
public function play_start() {
Создайте пустой конструктор с именем play()
на этом этапе, если хотите.
В среде разработки Flash IDE выберите фрейм, в котором вы хотите отобразить элементы, затем создайте там ключевой кадр. Выберите ключевой кадр и перейдите на панель действий (F9) и введите следующий код:
this.play_start();
как только точка воспроизведения достигнет ключевого кадра, ваш код должен быть выполнен.
Комментарии:
1. Это было действительно полезно. Для этого нужно больше, чем просто поставить лайк, он также получает комментарий!