символ доступа в "внешнем" SWF AS3 - PullRequest
2 голосов
/ 22 февраля 2010

Я могу сделать 2 вещи. Загрузите внешний SWF и измените цвет объекта. Когда я соединяю эти две вещи, это не работает. Как изменить цвет загруженного SWF? Я хочу получить доступ к именам экземпляров в загруженных SWF-файлах.

ЧТО Я СКАЗАЛ
Я должен упаковать его и установить пути к классам. Есть ли сейчас простой способ?

альтернативный текст 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. Я играл с настройками публикации и безопасности.

ЭКСПЕРИМЕНТ"чтобы понять, как использовать символы во внешних SWF-файлах"

Ответы [ 2 ]

4 голосов
/ 23 февраля 2010

Вам не хватает «корня», после загрузки 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 корневое свойство относится к основной временной шкале загруженного SWF-файла (а не к временной шкале SWF-файла, который загрузил другой SWF-файл)». от http://www.adobe.com/devnet/actionscript/cookbook/timeline_root.html

0 голосов
/ 22 февраля 2010

Это потому, что 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
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...