我可以做两件事。加载外部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文件中使用符号”
答案 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
}