Как я могу получить доступ к свойствам класса документа из шкалы времени в AS3? - PullRequest
0 голосов
/ 01 марта 2010

Я создаю ваш стандартный flash-заголовок для слайд-шоу для веб-страницы.

Есть три основные части:

  • Класс Слайд-шоу
  • Класс контроллера, который используется в качестве проектов Класс документа
  • Некоторые ссылки код временной шкалы .

Класс слайд-шоу имеет все функциональные возможности, поэтому я использовал класс Document для создания нового экземпляра слайд-шоу и сохранил переменную свойства, называемую слайд-шоу, которая содержит ссылку на экземпляр слайд-шоу.

import flash.display.MovieClip;
import flash.events.Event;

public class Header extends MovieClip
{
    public var slideshow:Slideshow;
    public function CSYC_Header()
        {
            var picturesURL:String = "images/pictures.xml";
            var picturesURLFVar:String = root.loaderInfo.parameters.pictures;
            picturesURL = picturesURLFVar ? picturesURLFVar : picturesURL;
            slideshow = new Slideshow(picturesURL, Slideshow.FADE);             
            slideshow.init();
            addChild(slideshow);
        }

    public function hello():void{trace("Hello");}
}

Теперь мой следующий шаг - использовать Adobe Flash Professional, чтобы нарисовать некоторые кнопки воспроизведения и остановки, а затем связать события их кликов с вызовом slidshow.play () /. Pause (). Этот код просто место на временной шкале:

import flash.events.MouseEvent;

pause_control_btn.addEventListener(MouseEvent.CLICK, pauseClicked);
play_control_btn.addEventListener(MouseEvent.CLICK, playClicked);
addChild(pause_control_btn);
addChild(play_control_btn);

function pauseClicked(e:MouseEvent):void 
{
    //the play and pause buttons are on the stage and have the following names as
    // thier instance names: pause_control_btn, play_control_btn
    pause_control_btn.alpha = 0;
    play_control_btn.alpha = 0.37;
    slideshow.pause();
}

function playClicked(e:MouseEvent):void 
{
    pause_control_btn.alpha = 0.37;
    play_control_btn.alpha = 0;
    slideshow.play();
}

Несмотря на то, что я могу вызывать обычные методы, которые находятся в Doc Class из временной шкалы, я не могу вызывать свойства без следующей ошибки, например, когда я говорю slideshow.play ():

1061: Call to a possibly undefined method play through a reference with static type com.example.test:Slideshow.

Так что я упускаю что-то очевидное или мне придется создавать метод в моем классе документов каждый раз, когда я хочу связать событие для вызова объекта в моем классе документов?

1 Ответ

1 голос
/ 01 марта 2010

Нет необходимости размещать этот код для кнопок на временной шкале; вы можете ссылаться на эти объекты по именам их экземпляров из класса документов. Это было бы самое простое решение, я думаю, что оно полностью обходило бы временные рамки.

В противном случае, возможно, вызов parent.slideshow или root.slideshow (хотя я думаю, что root - это AS2, я не совсем помню) даст вам доступ к этому экземпляру с временной шкалы. Первый вариант, вероятно, все еще является лучшим вариантом и хранит ваш код в одном месте.

Надеюсь, это поможет.

...