Некоторые назвали бы это вопросом вкуса, но:
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";
Работы, любезные с рекурсией, также:)
У вас есть только одна переменная загрузчика
, и вы создаете четыре экземпляра загрузчика
и назначаете их ей - поэтому, если вы нажимаете все четыре из их в быстрой последовательности, переменная 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?
Опять же, это может быть связано с тем, что вы добавляете другой объект загрузчик
- нажимаете ли вы более чем на одну кнопку просмотра? Нажмите на кнопку просмотра и подождите, пока она загрузится, чтобы увидеть, как она работает.
попробуйте отследить parent и parent.parent, я уверен, что это из-за дополнительного "parent"