将变量从动作脚本 3 传递到动作脚本 2

Posted

技术标签:

【中文标题】将变量从动作脚本 3 传递到动作脚本 2【英文标题】:Passing variables from actionscript 3 to actionscript 2 【发布时间】:2015-09-01 20:18:14 【问题描述】:

我有一个用 AS3 编写的 swf,它加载了一个 AS2 swf。

AS3 代码:

var url:String = "as2.swf?myvar=hello";
var spURL:Array = url.split("?");
var urlVars:URLVariables = new URLVariables();
urlVars.decode(spURL[1]);

var req:URLRequest = new URLRequest( spURL[0] );
req.data = urlVars;
req.method = URLRequestMethod.GET;

AS2 代码:

trace(_root.myvar);

但没有任何痕迹!

【问题讨论】:

【参考方案1】:

我找到了问题的解决方案。

完整源代码如下

AS3:带有一个名为“as2btn”的影片剪辑和一个名为“as3_log”的文本字段。发布类名称为“main_as3”

package  

    import flash.display.*;
    import flash.events.*;
    import flash.net.*;

    public class main_as3 extends MovieClip 


        public var ld:Loader;

        public function main_as3() 
            // constructor code
            this.as2btn.addEventListener(MouseEvent.MOUSE_DOWN, as2Load);
            this.logMessage("Initialized!");

        


        public function logMessage(msg:String)
        
            this.as3_log.appendText("AS3: " + msg + "\n");
           

        public function as2Load(evt:MouseEvent)
        
            if (this.ld) 
                this.ld.unloadAndStop();
                this.ld = null;
            

            var url:String = "as2.swf?myvar=1rewr&myvar2=1234";
            var spURL:Array = url.split("?");
            var urlVars:URLVariables = new URLVariables();
            urlVars.decode(spURL[1]);

            var req:URLRequest = new URLRequest(spURL[0]);

            req.data = urlVars;
            req.method = URLRequestMethod.GET;

            this.ld = new Loader();
            this.ld.load(req);
            addChild(this.ld);
        

    


AS2:带有影片剪辑链接标识符“main”和类名“main_as2”的包含一个名为“as2_log”的文本字段

class main_as2 extends MovieClip 

    var _parent;

    function main_as2() 
    
        super();
        this.gotoAndStop(1);
        this.logMessage("Initialized!");
        this.logMessage("_parent.myvar: " + _parent.myvar);

    

    function logMessage(msg:String)
    
        this["as2_log"].text = this["as2_log"].text + "AS2: " + msg + "\n";
    

【讨论】:

以上是关于将变量从动作脚本 3 传递到动作脚本 2的主要内容,如果未能解决你的问题,请参考以下文章

动作脚本 3 - 在时间线上跳过动作

将动作脚本 2 转换为动作脚本 3

动作脚本 2 函数

从 Photoshop 动作到 Photoshop 脚本?

如何知道是动作脚本 1、动作脚本 2 还是动作脚本 3?

如何在动作脚本中舍入数字