![]() |
|
||||||||||
|
|||||
|
Мувику подключаю класс, но при нажатии на кнопку, которая расположена на главной сцене, функция не хочет срабатывать.
Класс, который подключается к мувику class Picture_loading extends MovieClip { public function init() { _root.btn.__proto__ = Btn_class.prototype;//подключаю кнопке на сцене Btn_class _root.btn.init();//Вызываю функцию init в Btn_class } public function start_f() {//функция не срабатывает trace("start_f"); } } Функция start_f вызывается только в том случае если кнопка расположена непосредственно в том мувике к которому подключен класс Picture_loading, а нужно вызывать функцию, когда кнопка расположена на главной сцене. |
|
|||||
|
>>а нужно вызывать функцию, когда кнопка расположена на главной сцене.
start_f() должна быть определена в this._parent, т.е. на главной сцене в этом случае либо вызывать ее надо не как this._parent.start_f(), а как ссылкаНаЭкземплярPicture_loading.start_f() |
|
|||||
|
Я только начал изучать особенности написания скрипта в классах и не совсем понимаю, что есть ссылкаНаЭкземпляр?
Добавлено через 19 минут Цитата:
class Picture_loading extends MovieClip {
public function init() {
_root.btn.__proto__ = Btn_class.prototype _root.btn.init();
this._parent.start_f = start_f;
}
public function start_f() {//функция не срабатывает
trace("start_f");
}
}
Цитата:
|
|
|||||
|
>>и не совсем понимаю, что есть ссылкаНаЭкземпляр
затруднительно в этом случае что-то объяснить, хотя все и предельно просто на самом деле: ссылкаНаЭкземпляр - это буквально ссылка на экземпляр метод (start_f, например) можно вызвать у того, у кого он есть.. в твоем примере он есть у всех экземпляров Picture_loading т.е. и вызов должен выглядеть как (мувик класса Picture_loading).start_f() с другой стороны start_f может быть и не только у экземпляров Picture_loading, можно определить его просто в кадре какого-то мувика, того же _root' а, например, тогда и _root.start_f() тоже будет работоспособным.. должен предупредить, что писать такое ( обращение к _root, _parent и т.п.) в классах - полный абсурд, даже при том что Upd. про ссылку: можно передавать ее, например, в init этого Btn_class class Picture_loading extends MovieClip { public function init() { _root.btn.__proto__ = Btn_class.prototype;//подключаю кнопке на сцене Btn_class _root.btn.init(this);//Вызываю функцию init в Btn_class } public function start_f() {//функция не срабатывает trace("start_f"); } } class Btn_class extends MovieClip { private var _owner:Picture_loading; public function init(owner:Picture_loading) { onRelease = release; _owner = owner; } private function release() { _owner.start_f();//при нажатии пытаюсь вызвать функцию } } не берусь предугадать каких именно, но граблей на таком пути будет не мало, мужайся.. ![]() Последний раз редактировалось silin; 08.05.2009 в 12:56. |
|
|||||
|
Спасибо за советы.
Цитата:
![]() |
![]() |
![]() |
Часовой пояс GMT +4, время: 01:33. |
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | |
| Опции просмотра | |
|
|