|
|
|||||
Регистрация: May 2011
Адрес: Севастополь
Сообщений: 15
|
Не отслеживаются события
Доброго времени суток.
Прошу помочь разобраться с кодом. Пишу меню на as3.0 Работаю с классами. Есть 2 класса. 1 класс это сборщик (т.е. главный класс) 2 класс меню. На главной сцене есть мувиклип, в который я добавляю меню, и вешаю события на кнопки, который расположены в меню. И вот проблема - события не отслеживаются... Код 1 класса: package { import flash.display.Sprite; import flash.display.MovieClip; import com.rad.*; public class Main extends Sprite { private var mainMenu:MainMenu = new BaseMenu; public function Main(){ mainMenu.addMainMenu(168, 170); container.addChild(mainMenu); } } } package com.rad { import flash.display.Sprite; import flash.display.MovieClip; import flash.events.MouseEvent; public class MainMenu extends Sprite { public function MainMenu() { } public function addMainMenu(X:int,Y:int):void { this.x = X; this.y = Y; for (var i:int = 0; i <= this.numChildren; i++) { var one:Sprite = this.getChildByName("menuItem_"+i) as Sprite; if (one) { one.addEventListener(MouseEvent.CLICK, f_onMouseClick); } } } private function f_onMouseClick(e:MouseEvent):void { //e.stopImmediatePropagation (); mouseChildren = false; trace (e.target.name); } } } |
|
|||||
[+4 06.05.14]
|
Цитата:
Цитата:
Цитата:
__________________
Марк Tween |
|
|||||
Регистрация: May 2011
Адрес: Севастополь
Сообщений: 15
|
Забыл написать что в мувиклипе MainMenu расположены 4 кнопки.
Цыкл действительно не выполнялся потому, что, я забыл кнопкам прописать instance name "itemMenu_" теперь все работает. Если вдруг, кто - то сталкнется с такой же проблемой как и я, может будет полезно прочить данный топик. in4core - спасибо, за то, что ответили Добавлено через 22 часа 56 минут Не стал создавать новую тему, так как, все это относится к событиям. Проблема в том, что есть мувиклип, внутри него расположено динамическое текстовое поле. На кнопке повешено 3 события, Mouse_CLICK, Mouse_Over, Mouse_Out. Суть проблемы - события работают нормально если курсор не заходит в область текстового поля, а если курсор над текстовым полем кидает ошибки что я обращаюсь к 0 и ничего не работает. Как отключить события с текстового поля? Писал и mouseEnabled = false и mouseChildren = false - не помогает... ошибка: Помогите разобраться с проблемой |
|
|||||
Регистрация: May 2011
Адрес: Севастополь
Сообщений: 15
|
Класс MainMenu
package com.rad { import flash.display.Sprite; import flash.display.MovieClip; import flash.events.Event; import flash.events.MouseEvent; import flash.text.TextField; import com.greensock.TweenLite; /** * ... * @author shmblra */ public class MainMenu extends Sprite { public var checkSound:Boolean; public var checkSlojnost:Boolean; public function MainMenu() { checkSound = false; checkSlojnost = false; } public function addMainMenu(X:int,Y:int):void { this.x = X; this.y = Y; for (var i:int = 0; i <= this.numChildren; i++) { var one:Sprite = this.getChildByName("item_"+i) as Sprite; if (one) { one.addEventListener(MouseEvent.CLICK, f_onMouseClick); one.addEventListener(MouseEvent.MOUSE_OVER, f_onMouseOver); one.addEventListener(MouseEvent.MOUSE_OUT, f_onMouseOut); } } } private function f_onMouseClick(e:MouseEvent):void { //e.stopImmediatePropagation (); switch (e.target.name) { case "item_1": trace ('play'); break; case "item_2": trace ('option'); TweenLite.to(this, 1, { y: -35 } ); break; case "item_3": trace ('how play'); TweenLite.to(this, 1, { y: -240 } ); break; case "item_4": trace ('about'); TweenLite.to(this, 1, { y: -450 } ); break; case "item_5": trace ('sound'); if (!checkSound) { item_5.sound_txt.text = "выкл."; checkSound = true; }else { item_5.sound_txt.text = "вкл."; checkSound = false; } break; case "item_6": trace ('slojnost'); if (!checkSlojnost) { item_6.slojnost_txt.text = "легко"; checkSlojnost = true; }else { item_6.slojnost_txt.text = "тяжело"; checkSlojnost = false; } break; case "item_7": trace ('return'); TweenLite.to(this, 1, { y:170 } ); break; case "item_8": TweenLite.to (this,1,{y:170}); break; case "item_9": TweenLite.to(this, 1, { y:170 } ); break; } } private function f_onMouseOver (e:MouseEvent):void { var selectItem:SelectItem = e.target as SelectItem; selectItem.gotoAndStop(2); selectItem.mouseChildren = false; } private function f_onMouseOut (e:MouseEvent):void { var selectItem:SelectItem = e.target as SelectItem; selectItem.gotoAndStop(1); } } } Ошибка данная все одно присутствует ... На полях где я присваиваю в текстовые поля внутри мувиклипа значение... |
|
|||||
for (var i:int = 0; i < this.numChildren; i++) { var one:Sprite = this.getChildByName("item_"+i) as Sprite; if (one) { one.mouseChildren = false; one.addEventListener(MouseEvent.CLICK, f_onMouseClick); one.addEventListener(MouseEvent.MOUSE_OVER, f_onMouseOver); one.addEventListener(MouseEvent.MOUSE_OUT, f_onMouseOut); } }
__________________
Чтобы доказать, что вы не робот, причините вред другому человеку. |
|
|||||
Регистрация: May 2011
Адрес: Севастополь
Сообщений: 15
|
Огромное Всем спасибо!
|
Часовой пояс GMT +4, время: 20:47. |
|
« Предыдущая тема | Следующая тема » |
|
|