![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
В конструкторе класса создаётся контекстное меню. Но методы этого объекта, которые повешены на пункты меню не вызываются. Почему?
dynamic class Tmb extends MovieClip {
private var newMenu:ContextMenu, menuItemDelete:ContextMenuItem, menuItemResize:ContextMenuItem;
function Tmb() {
super();
this.newMenu = new ContextMenu();
this.newMenu.hideBuiltInItems();
this.menuItemDelete = new ContextMenuItem("Delete object", removeit);
//this.menuItemDelete = new ContextMenuItem("Delete object", this.removeit); - так тоже метод не находится
this.menuItemResize = new ContextMenuItem("Resize object", resizeit);
this.newMenu.customItems.push(this.menuItemDelete);
this.newMenu.customItems.push(this.menuItemResize);
this.menu = this.newMenu;
}
function removeit(){
this.removeMovieclip();
}
function resizeit(){
this._xscale=this._yscale=200;
}
}
|
|
|||||
|
Banned
[+1 08.05.08]
[+4 14.04.08] [+1.3 02.05.08] Регистрация: Oct 2006
Адрес: кагбэ Киеф!!1
Сообщений: 1,473
|
вот код, где box - инстанс имя объекта(МК).
Объясни зачем super (); dynamic class Tmb extends MovieClip {
private var newMenu:ContextMenu, menuItemDelete:ContextMenuItem, menuItemResize:ContextMenuItem;
function Tmb () {
//super ();
newMenu = new ContextMenu ();
newMenu.hideBuiltInItems ();
menuItemDelete = new ContextMenuItem ("Delete object", remove);
menuItemResize = new ContextMenuItem ("Resize object", resizE);
newMenu.customItems.push (menuItemDelete);
newMenu.customItems.push (menuItemResize);
menu = newMenu;
}
function remove () {
box.unloadMovie ();
}
function resizE () {
box._xscale = box._yscale=200;
}
}
|
|
|||||
|
to Mr. Fixit :
super() нужно для создания мувиклипа этого класса,а не просто объекта. Ты проверил свой код на работоспособность? Цитата:
Последний раз редактировалось Annihilator; 28.02.2007 в 20:50. |
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Цитата:
|
|
|||||
|
Banned
[+1 08.05.08]
[+4 14.04.08] [+1.3 02.05.08] Регистрация: Oct 2006
Адрес: кагбэ Киеф!!1
Сообщений: 1,473
|
понятно. Но код функционирует.
|
|
|||||
|
Banned
[+1 08.05.08]
[+4 14.04.08] [+1.3 02.05.08] Регистрация: Oct 2006
Адрес: кагбэ Киеф!!1
Сообщений: 1,473
|
и что надо добавить или изменить, что бы удалялся соответствующий объект?
dynamic class Tmb extends MovieClip {
private var newMenu:ContextMenu, menuItemDelete:ContextMenuItem, menuItemResize:ContextMenuItem;
function Tmb () {
this.super ();
this.newMenu = new ContextMenu ();
this.newMenu.hideBuiltInItems ();
this.menuItemDelete = new ContextMenuItem ("Delete object", remove);
this.menuItemResize = new ContextMenuItem ("Resize object", resizE);
this.newMenu.customItems.push (menuItemDelete);
this.newMenu.customItems.push (menuItemResize);
this.menu = this.newMenu;
}
function remove () {
for (var i = 0; i<3; i += 1) {
_root['box'+i].unloadMovie ();
}
}
function resizE () {
for (var i = 0; i<3; i += 1) {
_root['box'+i]._xscale = this['box'+i]._yscale=200;
}
}
}
|
|
|||||
|
Вобщем я понял: работает только если внутри метода прописан прямой путь к созданному клипу. Это плохо, потому что, как я уже сказал, они создаются в разных местах и с динамическим именем. Как выкрутится в такой ситуации?
|
|
|||||
|
Et cetera
Регистрация: Sep 2002
Сообщений: 30,787
|
Использовать Delegate.
|
|
|||||
|
__etc - спасибо, Delegate - это то, что надо Работает из любого места
![]() |
![]() |
![]() |
Часовой пояс GMT +4, время: 11:01. |
|
|
« Предыдущая тема | Следующая тема » |
|
|