访问“外部”swf AS3中的符号

时间:2010-02-22 18:55:22

标签: flash actionscript-3

我可以做两件事。加载外部swf,并更改对象的颜色。当我把这两件事放在一起时,它不起作用。 如何更改已加载的swf的颜色? 我想在加载的swf文件中访问实例名称。

我告诉了什么
我必须打包并设置类路径。现在有一个简单的方法吗?

alt text http://www.ashcraftband.com/myspace/videodnd/ball.jpg

ball.swf

"white ball on the stage named blueball"

load.fla

//load ball.swf
var bgLoader:Loader = new Loader();
bg_mc.addChild(bgLoader);
var bgURL:URLRequest = new URLRequest("ball.swf");
bgLoader.load(bgURL);

//change color of ball to blue "code works in ball.swf" 
var myColor:ColorTransform = blueball.transform.colorTransform; 
myColor.color = 0x066ccf; 
blueball.transform.colorTransform = myColor;

错误#1120
访问未定义的属性

注意
swf文件都是actionscript-3。我玩过发布和安全设置。

EXPERIMENT “了解在外部swf文件中使用符号”

2 个答案:

答案 0 :(得分:4)

您缺少“root”,加载swf后,您可以使用root访问时间轴范围。请考虑以下事项:

var bgLoader:Loader = new Loader();
bg_mc.addChild(bgLoader);
var bgURL:URLRequest = new URLRequest("ball.swf");
bgLoader.load(bgURL);
bgLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onLoaded);

function onLoaded(event:Event):void
{
    // use root to reach the timeline scope of the loaded swf
    var loadedBlueball:MovieClip = event.target.content.root.blueball;
    //change color of ball to blue "code works in ball.swf" 
    var myColor:ColorTransform = loadedBlueball.transform.colorTransform; 
    myColor.color = 0x066ccf; 
    loadedBlueball.transform.colorTransform = myColor;

    // just adding the ball to stage, you might want to add all swf
    addChild(loadedBlueball);
}

“在ActionScript 3中,root属性是指加载的SWF的主时间轴(而不是加载其他SWF的SWF的时间轴)。” 来自http://www.adobe.com/devnet/actionscript/cookbook/timeline_root.html

答案 1 :(得分:0)

因为当您尝试更改颜色时未加载swf。你只需要使用事件,它应该工作

import flash.events.*;

[...]

var bgLoader:Loader = new Loader();
bgLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, setMyBallColor); 
bg_mc.addChild(bgLoader);
var bgURL:URLRequest = new URLRequest("ball.swf");
bgLoader.load(bgURL);

[...]

function setMyBallColor() {
//change color of ball to blue "code works in ball.swf" 
var myColor:ColorTransform = blueball.transform.colorTransform; // bg_mc.blueball.transform.colorTransform; ?
myColor.color = 0x066ccf; 
blueball.transform.colorTransform = myColor; // same
}