2010-01-19 2 views
3

Я XML-документ, который я хотел бы использовать, чтобы показать MovieClips в моем .fla:Преобразовать узел XML в мувиклип

<linkedMovieClip>TestClip</linkedMovieClip> 

В моей .fla, я создал символ, называемый TestClip и выберите Связь > Экспорт для ActionScript и названный им TestClip.

Мой код в моем классе Document прослеживает XML:

var t:*= getDefinitionByName(String(slideItem.linkedMovieClip)) as Class; 
var linked:MovieClip = new t(); 
trace("linked is..."+ linked); // outputs [Object TestClip]; 

Однако, когда я компилирую, я получаю Error # 1065.

ReferenceError: Error #1065: Variable is not defined. 
    at global/flash.utils::getDefinitionByName() 

Я искал вокруг и много участков рекомендуется в том числе следующие импорта:

import flash.utils.getDefinitionByName; 
import TestClip; 

И я включил следующую фиктивную переменную:

public var _dummyClip:TestClip; 

Однако, я все еще получаю сообщение об ошибке , Когда я проверяю отладчик, это из этой строки:

var t:*= getDefinitionByName(String(slideItem.linkedMovieClip)) as Class; 

Может кто-нибудь посоветуете?

ответ

1

Ваш код выглядит нормально. Попробуйте создать экземпляр TestClip в вашей программе, чтобы убедиться, что он скомпилирован в SWF. Прослеживать полное имя и убедитесь, что это действительно TestClip

var _dummyClip:TestClip = new TestClip(); 
trace(flash.getQualifiedClassName(_dummyClip));//what does it trace? 
1

С выше ответ, я вижу мою проблему сейчас.

Мой XML выглядел:

<items> 
<item><linkedMovieClip>TestClip</linkedMovieClip></item> 
<item><linkedMovieClip>TestClip</linkedMovieClip></item> 
<item><linkedMovieClip>TestClip</linkedMovieClip></item> 
<item></item> 
<item><linkedMovieClip>TestClip</linkedMovieClip></item> 
<item></item> 
</items> 

т.е. некоторые элементы были узлы, некоторые из них не сделал.

Когда я использую for each (var item:XML in itemList) цикл для перебора моих узлов XML() узлы, которые не содержат узел сбой и возвращает Reference Error (поскольку не существует узел называется «linkedMovieClip».

Если я использую a, чтобы проверить наличие узла, он работает:

if (xmlListname.linkedMovieClip != undefined) { 

     trace(String(xmlListname.linkedMovieClip)); 
    var c:* = getDefinitionByName(String(xmlListname.linkedMovieClip)) as Class; 
     var mc:MovieClip = new c(); 
    trace(mc); 
} 
Смежные вопросы