Я новичок в программировании AS3 (только обучение) Я пытаюсь создать значок меню стиля FB, который должен анимироваться при наведении. Значок - это MovieClip и состоит из Bg MovieClip и 3 горизонтальных линий MovieClips. (Я разделил их так, чтобы анимировать каждый клип, используя AS3)Доступ к детям из MovieClip, когда родитель добавлен динамически через AS 3
Я создаю экземпляр и добавляю родительский элемент в свою сцену с помощью ActionScript.
Проблема, с которой я сталкиваюсь, заключается в том, что я не могу получить доступ к файлам для детей, поскольку я не создавал их индивидуально (но они появляются на сцене). Когда я пытаюсь получить к ним доступ, появляется следующая ошибка.
Scene 1, Layer 'actions', Frame 1, Line 25, Column 14 1119: Access of possibly undefined property menuBg_mc through a reference with static type MenuIcon.
Я также попытался создать экземпляр дочерних элементов в классе родительских конструкторов и попытался их сослаться. Возникла следующая ошибка:
Scene 1, Layer 'actions', Frame 1, Line 25, Column 14 1119: Access of possibly undefined property menuBg_mc through a reference with static type MenuIcon.
Не могли бы вы направить меня на то, что я должен делать и почему? Am есть код AS3, который я использовал.
в первом кадре 1
import flash.display.MovieClip;
import flash.events.Event;
var menuIcon_mc: MenuIcon = new MenuIcon();
addChild(menuIcon_mc);
menuIcon_mc.addEventListener(MouseEvent.MOUSE_OVER, hoverAnimate);
function getChildrenof(container:DisplayObjectContainer):Array {
var temp:Array = [];
var containerChildren:Number = container.numChildren;
trace(containerChildren);
for (var i:int = 0; i<containerChildren; i++) {
temp.push(container.getChildAt(i));
}
return temp;
}
function hoverAnimate(event: Event): void {
menuIcon_mc.menuBg_mc.alpha = 0.5;
}
MenuIcon Конструктор класс
package {
import flash.events.Event;
import flash.display.MovieClip;
public class MenuIcon extends MovieClip {
public function MenuIcon() {
var menuBg_mc:MenuBg = new MenuBg();
var menuLineTop_mc:MenuLines = new MenuLines();
var menuLineCenter_mc:MenuLines = new MenuLines();
var menuLineBottom_mc:MenuLines = new MenuLines();
}
}
}
Am использование Actionscript 3 и Flash Professional CC (15.0.0.173)
Привет, Эзгюры Ersil. Благодарю. Я попробовал ваше предложение, и теперь декларация кажется прекрасной. Моя проблема заключается в том, что я не уверен, как получить доступ к детям, чтобы изменить их свойства.
package {
import flash.events.MouseEvent;
import flash.display.MovieClip;
public class MenuIcon extends MovieClip {
public
var menuBg_mc: MenuBg;
public
var menuLineTop_mc: MenuLines;
public
var menuLineCenter_mc: MenuLines;
public
var menuLineBottom_mc: MenuLines;
public
function MenuIcon() {
this.buttonMode = true;
this.addEventListener(MouseEvent.MOUSE_OVER, hoverBtn);
}
private
function hoverBtn(e: MouseEvent): void {
//Changing Child property
this.menuBg_mc.alpha = 0.5;
}
}
}
Am получаю сообщение об ошибке при выполнении hoverBtn():
TypeError: Error #1009: Cannot access a property or method of a null object reference. at MenuIcon/hoverBtn()
Я также попытался изменить базовый класс детей к классу MenuIcon. Но это тоже не работает.
Непонятно, почему это происходит. Если есть родительский клип с несколькими дочерними элементами, должны ли дети быть индивидуально созданы или создать экземпляр родительского клипа? Если нет, как мне это сделать?