Как получить доступ к переменной родительского фрагмента ролика от загруженного swf

Некоторые назвали бы это вопросом вкуса, но:

aWizz = wizz || "default";
// same as: if (wizz) { aWizz = wizz; } else { aWizz = "default"; }

trinary оператор может быть объединен в цепочку для действия как Схема (конусовидный...):

(cond (predicate  (action  ...))
      (predicate2 (action2 ...))
      (#t         default ))

может быть записан как...

predicate  ? action( ... ) :
predicate2 ? action2( ... ) :
             default;

Это "очень функционально", поскольку это переходит Ваш код без побочных эффектов. Таким образом вместо:

if (predicate) {
  foo = "one";
} else if (predicate2) {
  foo = "two";
} else {
  foo = "default";
}

можно записать:

foo = predicate  ? "one" :
      predicate2 ? "two" :
                   "default";

Работы, любезные с рекурсией, также:)

5
задан chchrist 25 November 2009 в 19:32
поделиться

2 ответа

У вас есть только одна переменная загрузчика , и вы создаете четыре экземпляра загрузчика и назначаете их ей - поэтому, если вы нажимаете все четыре из их в быстрой последовательности, переменная loader будет фактически содержать объект Loader , соответствующий последнему щелчку. Все ваши вызовы addChild будут воздействовать на один и тот же объект Loader - остальные не будут добавлены, а их родители по-прежнему будут иметь значение null

. Внесите следующие изменения в код:

private function onCardInit(e:Event):void 
{
    addChild(LoaderInfo(e.currentTarget).loader);
    var content:DisplayObject = loader.content;
    trace(content);
    trace(content.closeButton);
    content.closeButton.addEventListener(MouseEvent.CLICK, onCloseClick);
}

private function onCloseClick(e:MouseEvent):void 
{
    trace(e.currentTarget);//should be the closeButton
    trace(e.currentTarget.parent);//should be the loaded swf
    trace(e.currentTarget.parent.parent);//should be the Loader object that loaded it

    //The following will work only if last three traced correctly
    removeChild(e.currentTarget.parent.parent);
}

Ответьте на следующее обновление в вопросе:

Если я addChild (loader) в onViewClick вместо onCardInit , то Объект (parent.parent) .testVar в первом кадре загруженного swf работает. Почему не Сработает ли, если я добавлюChild в функцию onCardInit?

Опять же, это может быть связано с тем, что вы добавляете другой объект загрузчик - нажимаете ли вы более чем на одну кнопку просмотра? Нажмите на кнопку просмотра и подождите, пока она загрузится, чтобы увидеть, как она работает.

2
ответ дан 15 December 2019 в 01:03
поделиться

попробуйте отследить parent и parent.parent, я уверен, что это из-за дополнительного "parent"

0
ответ дан 15 December 2019 в 01:03
поделиться
Другие вопросы по тегам:

Похожие вопросы: