0

我正在为网页构建标准幻灯片 Flash 标题。

主要分为三个部分:

  • 幻灯片
  • 用作项目文档类的控制器类
  • 一些链接时间线代码

slideshow 类具有所有功能,因此我使用 Document 类创建了一个新的幻灯片实例,并保留了一个名为 slideshow 的属性变量,该变量保留了对 Slideshow 实例的引用。

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");}
}

我现在的下一步是使用 Adob​​e 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 类中的常规方法,但我无法调用属性而不会出现以下错误,例如当我说 slideshow.play() 时:

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

那么我是否遗漏了一些明显的东西,或者每次我想连接一个事件来调用我的文档类中的一个对象时,我是否必须在我的文档类上创建一个方法?

4

1 回答 1

1

无需将按钮代码放在时间线上;您可以通过文档类中的实例名称引用这些对象。我认为那将是最简单的解决方案,完全避免时间线。

否则,可能调用 parent.slideshow 或 root.slideshow(虽然我认为 root 是 AS2,但我不太记得)会让您从时间轴访问该实例。前一个选项可能仍然是更好的选择,并将您的代码保存在一个地方。

希望有帮助。

于 2010-03-01T05:01:36.507 回答