Преобразование узла XML в мувиклип

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

<linkedMovieClip>TestClip</linkedMovieClip>

В своем .fla я создал символ под названием TestClip, выбрал Linkage > Export for Actionscript и назвал его TestClip.

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

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

Однако при компиляции я получаю ошибку № 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;

Кто-нибудь может посоветовать?


person redconservatory    schedule 19.01.2010    source источник


Ответы (2)


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

var _dummyClip:TestClip = new TestClip();
trace(flash.getQualifiedClassName(_dummyClip));//what does it trace?
person Amarghosh    schedule 20.01.2010

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

Мой 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-узлов (), узлы, которые не содержат узел, терпят неудачу и возвращают ошибку ссылки (поскольку нет узла с именем «linkedMovieClip».

Если я использую оператор if для проверки существования узла, он работает:

 if (xmlListname.linkedMovieClip != undefined) {

         trace(String(xmlListname.linkedMovieClip));
  var c:* = getDefinitionByName(String(xmlListname.linkedMovieClip)) as Class;
         var mc:MovieClip = new c();
  trace(mc);
 }
person redconservatory    schedule 20.01.2010