闪存触发帧上的AS代码

时间:2011-05-24 14:23:33

标签: flash actionscript-3

我是一名不得不在Flash中进行编码的Flex开发人员,所以我对如何在时间线上执行操作的理解有限。

我正在尝试将此动作附加到我计划播放的电影的第一帧。当我第一次播放电影时,代码按预期执行。但是,当我重新启动或回放到电影的第一帧时,代码不再执行。我不确定为什么会发生这种情况,因为似乎在一个框架中添加了动作脚本代码似乎非常简单。

import flash.utils.Timer;
import flash.net.URLLoader;
import flash.net.URLRequest;


var urlLoader:URLLoader;
var timer:Timer;

startAdPlay();

function startAdPlay():void
{
    if( urlLoader == null ) {
        urlLoader = new URLLoader();
    }

    urlLoader.load( new URLRequest(  "http://localhost:20081/startadplay/15" ) );

    timer = new Timer( (15 * 1000) );
    timer.addEventListener(TimerEvent.TIMER, stopAdPlay );
    timer.start();
}

function stopAdPlay(event:TimerEvent):void
{
    urlLoader.load( new URLRequest(  "http://localhost:20081/stopadplay" ) );

    timer.stop();
    stop();
}

2 个答案:

答案 0 :(得分:2)

鉴于您已经是Flex开发人员并因此习惯在Flash之外的单独文件中编写代码,我建议继续这样做,并在时间轴上尽可能少地编写代码。纯粹主义者将在时间轴上建议不使用任何代码,但我会在时间轴上放置函数调用和dispatchEvent()命令。然而,被调用的实际函数是在一个单独的.as文件中定义的。

所以在你的情况下我会把startAdPlay();函数调用时间轴,并将实际的函数体放在一个单独的类中,该类链接到属性窗口中的Flash影片。这将使定义函数的时间和位置更合乎逻辑。

答案 1 :(得分:1)

我想你在app中重启电影时不会调用startAdPlay()