【问题标题】:smooth transitions between external swfs.外部 swf 之间的平滑过渡。
【发布时间】:2011-08-25 17:48:38
【问题描述】:

我正在尝试回到 Flash。试着在这里写一些代码,但是……好吧,让我给你看。

我想要并且目前拥有的是一个主要的 swf,它根据按下的按钮加载资产。我有 3 个外部 SWF(为了这个例子,让我们调用初始加载的 swf“indexExt.swf”,文件二“f02.swf”和文件三,“f03.swf”),每个都有一个从第 1 帧到第 10 帧的图层。

第 1 帧有一个“intro”标签,第 5 帧有一个“outro”标签,第 10 帧有一个“end”标签。

indexExt.swf 在主 swf 的初始加载时加载。

至于我的按钮,我在主 swf 舞台上提供了我的按钮,实例名称与外部 swf 同名,这样通过这一行 event.target.name + ".swf" 我可以调用 em 而无需重新编写代码每个按钮等等。

我用于正常导入的按钮代码如下:

f01.addEventListener(MouseEvent.CLICK,btnclick);
f02.addEventListener(MouseEvent.CLICK,btnclick);


function btnclick(event:MouseEvent):void{

removeChild(loader);

var newSwfRequest:URLRequest = new URLRequest( event.target.name + ".swf");

loader.load(newSwfRequest);
loader.x = Xpos;
loader.y = Ypos;
addChild(loader);

}

现在我遇到的问题是我不知道如何定位点击/导入/加载的任何内容。

总的来说,我想做的是,将上面的按钮代码改写成如下所示:

// non code but you get the idea //


on press, if something is loaded, go to and play its "outro" frame label.
if "end frame label" load in event.target.name + ".swf"

我希望它不会令人困惑。基本上我想要的是在按下按钮时,无论加载什么电影,播放 outro 标签和 IF 以及何时点击“结束”标签,加载用户点击的任何内容。

我认为这是一种不错的方法,但有时我倾向于选择最难的方法。我不是专业人士,但任何提示/提示/代码等,我都会很乐意接受。

【问题讨论】:

    标签: flash actionscript-3


    【解决方案1】:

    您需要为您的加载器对象添加一个侦听器以获取完整事件。这将为您提供您正在寻找的参考。然后,您可以告诉该对象(如果已设置)在单击按钮时转到所需的帧。

    var loaded:Object;
    
    loader.contentLoaderInfo.addEventListener(Event.COMPLETE, handleLoaded);
    
    function handleLoaded(e:Event):void {
      loaded = e.target.content;
    }
    
    btn.addEventListener(MouseEvent.CLICK, handleClick);
    
    function handleClick(e:MouseEvent):void {
      if (loaded) {
        loaded.gotoAndPlay("outro");
      }
    
      //load new swf
    }
    

    【讨论】:

    • 嗨,Hotn。谢谢回复。我有个问题。我明白你的意思,但在你的第二行,什么是“loaderContentInfo”?
    • contentLoaderInfo 是存在于 Loader 对象上的属性,它允许您访问有关正在加载的内容的信息,例如加载的字节数和总字节数,以及对加载的实际内容的引用。它也是为加载程序的进度分派事件的对象,这就是为什么需要将侦听器添加到那里而不是直接添加到加载程序对象的原因。 help.adobe.com/en_US/FlashPlatform/reference/actionscript/3/…
    • 大声笑好的。我知道了。我问是因为我看到了它,但是在闪存中,“loaderContentInfo”没有变成蓝色的代码......所以我认为它是一个变量或者你忘记提及的东西或其他东西。但我现在明白了,这是一个错字,你输入了 loaderContentInfo,它的 contentLoaderInfo 哈哈。没什么大不了的,谢谢你的帮助。生病尝试现在工作
    • HotN,感谢您到目前为止的帮助。我现在唯一的问题是。那,无论我如何满足我的需求,我都会收到一个错误消息:第 65 1120 行:未定义属性事件的访问。这就是这一行:“loaded = event.target.content;”。我确实理解你试图教给我的所有概念,但那一行让我失望了,哈哈。有任何想法吗?再次感谢
    • 糟糕,对于 contentLoaderInfo 的命名错误,我们深表歉意。在我的帖子中修复了这个问题。至于您的错误,这是因为您用来访问 target.content 的对象引用需要与进入您的函数的参数相匹配。在上面的示例中,请注意参数是“e:Event”。 e 是 var 的名称,Event 是类型。所以你必须使用“loaded = e.target.content”。变量“event”永远不存在,导致您的错误。
    猜你喜欢
    • 2011-08-16
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-17
    • 2014-04-10
    • 1970-01-01
    • 2014-05-08
    • 2018-07-15
    相关资源
    最近更新 更多