![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Sep 2007
Сообщений: 43
|
Не получается обратиться к объекту в parent.
Document class package {
import flash.display.Sprite;
public class myRoot extends Sprite{
public function myRoot(){
var objA:aClass = new aClass();
objA.name="objA";
addChild(objA);
var objB:bClass = new bClass();
objB.name="objB";
addChild(objB);
}
}
}
package {
import flash.display.Sprite;
public class aClass extends Sprite{
var myProperty:Object = "A";
public function aClass(){
trace("A_object = " + myProperty);
}
public function changeParam(newData:String){
trace("A.myProperty = "+ newData);
}
}
}
package {
import flash.display.Sprite;
public class bClass extends Sprite{
var myProperty:String = "B";
public function bClass(){
parent.getChildAt(0).changeParam(myProperty);
}
}
}
что я неправильно делаю? |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Неправильно называете классы. Для начала.
А во-вторых, у DisplayObject нет метода changeParam. Необходимо привести полученный спрайт к aClass, т.е. сделать кастинг. |
|
|||||
|
Регистрация: Sep 2007
Сообщений: 43
|
__etc, спасибо... Про названия классов я вкурсе. Essential ActionScript 3.0 уже в пути с амазона.
Сам я дизайнер, пытаюсь перейти с AS1 на AS3. До изучения кастинга еще не дошел. Проблема в том, что даже trace(parent.getChildAt(0)); возврашает null |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
А потому что на момент вызова конструктора, parent ещё не обозначен.
addChild происходит позже. |
|
|||||
|
Регистрация: Aug 2007
Сообщений: 467
|
Чтобы было понятней:
ты делаешь: var objB:bClass = new bClass(); <-- вызываеться конструктор bClass(). В этом конструкторе ты делаешь: parent.getChildAt(0).changeParam(myProperty); но parent появляеться только тогда, когда ты делаешь: addChild(objB); |
|
|||||
|
Регистрация: Sep 2007
Сообщений: 43
|
Тоесть получается что при компиляции swf сперва обрабатываются конструкторы всех классов, а только потом появляется display object. Не подскажите где в хелпе об этом можно подробнее прочитать?
|
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Конструктор — это функция. Она выполняется, когда вы пишете new. После её выполнения уже происходит дальнейшее выполнение кода, appendChild и т.д.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 21:36. |
|
|
« Предыдущая тема | Следующая тема » |
|
|