|
|
« Предыдущая тема | Следующая тема » |
Опции темы | Опции просмотра |
|
|
|||||
Регистрация: May 2013
Сообщений: 8
|
addEventListener не является функцией
Здравствуйте.
Есть код: package { import flash.display.*; import flash.events.*; import flash.text.*; public class btnInputMl1 extends MovieClip { public function btnInputMl1() { this.addEventListener(MouseEvent.CLICK, clickHandler); } public function clickHandler(e:MouseEvent):void { pasword(); } public function pasword() { this.removeEventListener(MouseEvent.CLICK,clickHandler); var textFormat:TextFormat = new TextFormat(); textFormat.font = "Calibri"; textFormat.color = 0x000000; textFormat.size = 25; var w:qwerty = new qwerty(); addChild(w); var r:window = new window(); addChild(r); var t:winpass = new winpass(); t.x = 65; t.y = -100; addChild(t); var u:PassTxt = new PassTxt(); u.x = -120; u.y = -100; addChild(u); var muu:TextField = new TextField(); muu.setTextFormat(textFormat); addChild(muu); muu.type = TextFieldType.INPUT; muu.height = 42; muu.width = 167; muu.x = -20; muu.y = -122; muu.displayAsPassword = true; //muu.border = true; var a:vx = new vx(); a.x = 0; a.y = 0; a.buttonMode = true; addChild(a); var wx:bbbtttnnn = new bbbtttnnn(); addChild(wx); wx.x = 190; wx.y = -157; wx.addEventListener(MouseEvent.CLICK, exit); function exit(e:MouseEvent):void { removeChild(w); removeChild(r); removeChild(t); removeChild(u); removeChild(muu); removeChild(a); removeChild(wx); this.addEventListener(MouseEvent.CLICK, nnn); function nnn(e:MouseEvent):void { pasword(); this.removeEventListener(MouseEvent.CLICK, nnn); } wx.removeEventListener(MouseEvent.CLICK, exit); a.removeEventListener(MouseEvent.CLICK, loginFunction); trace("1"); } a.addEventListener(MouseEvent.CLICK, loginFunction); function loginFunction(e:MouseEvent):void { if (muu.text == "1") { trace("Complit!"); } else { trace("неверный пароль"); } } } } } При нажатии кнопки выхода из окна входа убирается окно входа, но при повторном нажатии на кнопку на сцене флеш выдаёт ошибку: TypeError: Error #1006: addEventListener не является функцией. at MethodInfo-31() И почему-то к полю ввода пароля не применяются шрифты. Подскажите как это исправить. Заранее спасибо. |
|
|||||
Вынесите функции exit и loginFunction в класс и будет вам счастье. Чтобы применить формат нужно вместо строки
написать строку
__________________
if (love is true) break my.heart; |
|
|||||
Регистрация: May 2013
Сообщений: 8
|
Шрифты пременились. Спасибо. А со слушателем проблема.
Сделал как вы сказали: package { import flash.display.*; import flash.events.*; import flash.text.*; public class btnInputMl1 extends MovieClip { public function btnInputMl1() { this.addEventListener(MouseEvent.CLICK, clickHandler); } public function clickHandler(e:MouseEvent):void { pasword(); } public function pasword() { this.removeEventListener(MouseEvent.CLICK,clickHandler); var textFormat:TextFormat = new TextFormat(); textFormat.font = "Calibri"; textFormat.color = 0x000000; textFormat.size = 30; var w:qwerty = new qwerty(); addChild(w); var r:window = new window(); addChild(r); var t:winpass = new winpass(); t.x = 65; t.y = -100; addChild(t); var u:PassTxt = new PassTxt(); u.x = -120; u.y = -100; addChild(u); var muu:TextField = new TextField(); muu.defaultTextFormat = textFormat; addChild(muu); muu.type = TextFieldType.INPUT; muu.height = 42; muu.width = 167; muu.x = -20; muu.y = -122; muu.displayAsPassword = true; //muu.border = true; var a:vx = new vx(); a.x = 0; a.y = 0; a.buttonMode = true; addChild(a); var wx:bbbtttnnn = new bbbtttnnn(); addChild(wx); wx.x = 190; wx.y = -157; wx.addEventListener(MouseEvent.CLICK, exit); a.addEventListener(MouseEvent.CLICK, loginFunction); } public function exit(e:MouseEvent):void { removeChild(w); removeChild(r); removeChild(t); removeChild(u); removeChild(muu); removeChild(a); removeChild(wx); this.addEventListener(MouseEvent.CLICK, nnn); function nnn(e:MouseEvent):void { pasword(); this.removeEventListener(MouseEvent.CLICK, nnn); } wx.removeEventListener(MouseEvent.CLICK, exit); a.removeEventListener(MouseEvent.CLICK, loginFunction); trace("1"); } public function loginFunction(e:MouseEvent):void { if (muu.text == "1") { trace("Complit!"); } else { trace("неверный пароль"); } } } } C:\Users\Mixail\Desktop\es\btnInputMl1.as, строка 63 1120: Обращение несуществующего свойства w. C:\Users\Mixail\Desktop\es\btnInputMl1.as, строка 64 1120: Обращение несуществующего свойства r. C:\Users\Mixail\Desktop\es\btnInputMl1.as, строка 65 1120: Обращение несуществующего свойства t. C:\Users\Mixail\Desktop\es\btnInputMl1.as, строка 66 1120: Обращение несуществующего свойства u. C:\Users\Mixail\Desktop\es\btnInputMl1.as, строка 67 1120: Обращение несуществующего свойства muu. C:\Users\Mixail\Desktop\es\btnInputMl1.as, строка 68 1120: Обращение несуществующего свойства a. C:\Users\Mixail\Desktop\es\btnInputMl1.as, строка 69 1120: Обращение несуществующего свойства wx. C:\Users\Mixail\Desktop\es\btnInputMl1.as, строка 76 1120: Обращение несуществующего свойства wx. C:\Users\Mixail\Desktop\es\btnInputMl1.as, строка 77 1120: Обращение несуществующего свойства a. C:\Users\Mixail\Desktop\es\btnInputMl1.as, строка 83 1120: Обращение несуществующего свойства muu. |
|
|||||
Конечно, откуда у вас в методе exit возьмутся локальные переменные из метода pasword.
Плюс к этому в методах типа nnn, this нет и не было, тоже будет ошибка.
__________________
местонахождение |
|
|||||
Регистрация: May 2013
Сообщений: 8
|
Как исправить то.
Можно ли добавить как-то в метод типа nnn this. |
|
|||||
Видимо ты раньше кодил на js. Во Flash все переменные, которые ты планируешь использовать в нескольких местах нужно объявлять в начале класса. Почитай про области видимости переменных. Функции внутри функций лучше не создавать. Их нужно объявлять на одном уровне - уровне класса.
__________________
if (love is true) break my.heart; |
|
|||||
Регистрация: May 2013
Сообщений: 8
|
Объявил переменные на уровне класса:
package { import flash.display.*; import flash.events.*; import flash.text.*; public class btnInputMl1 extends MovieClip { public static var e:qwerty; public static var r:window; public static var t:winpass; public static var u:PassTxt; public static var muu:TextField; public static var a:vx; public static var wx:bbbtttnnn; public function btnInputMl1() { this.addEventListener(MouseEvent.CLICK, clickHandler); } public function clickHandler(e:MouseEvent):void { pasword(); } public function pasword() { this.removeEventListener(MouseEvent.CLICK,clickHandler); var textFormat:TextFormat = new TextFormat(); textFormat.font = "Calibri"; textFormat.color = 0x000000; textFormat.size = 30; btnInputMl1.e = new qwerty(); addChild(btnInputMl1.e); btnInputMl1.r = new window(); addChild(btnInputMl1.r); btnInputMl1.t = new winpass(); btnInputMl1.t.x = 65; btnInputMl1.t.y = -100; addChild(btnInputMl1.t); btnInputMl1.u = new PassTxt(); btnInputMl1.u.x = -120; btnInputMl1.u.y = -100; addChild(btnInputMl1.u); btnInputMl1.muu = new TextField(); muu.defaultTextFormat = textFormat; addChild(muu); muu.type = TextFieldType.INPUT; muu.height = 42; muu.width = 167; muu.x = -20; muu.y = -122; muu.displayAsPassword = true; btnInputMl1.a = new vx(); btnInputMl1.a.x = 0; btnInputMl1.a.y = 0; btnInputMl1.a.buttonMode = true; addChild(btnInputMl1.a); btnInputMl1.wx = new bbbtttnnn(); addChild(btnInputMl1.wx); btnInputMl1.wx.x = 190; btnInputMl1.wx.y = -157; btnInputMl1.wx.addEventListener(MouseEvent.CLICK, exit); btnInputMl1.a.addEventListener(MouseEvent.CLICK, loginFunction); } public function exit(e:MouseEvent):void { removeChild(btnInputMl1.e); removeChild(btnInputMl1.r); removeChild(btnInputMl1.t); removeChild(btnInputMl1.u); removeChild(btnInputMl1.muu); removeChild(btnInputMl1.a); removeChild(btnInputMl1.wx); this.addEventListener(MouseEvent.CLICK, nnn); function nnn(e:MouseEvent):void { pasword(); this.removeEventListener(MouseEvent.CLICK,nnn); } wx.removeEventListener(MouseEvent.CLICK, exit); a.removeEventListener(MouseEvent.CLICK, loginFunction); trace("myau!!!!!"); } public function loginFunction(e:MouseEvent):void { if (muu.text == "qwerty") { trace("Complit!"); } else { var lkj:qwerty = new qwerty(); addChild(lkj); var ghj:ancorrectPassword = new ancorrectPassword(); addChild(ghj); var ert:bbbtttnnn = new bbbtttnnn(); addChild(ert); ert.x = 150; ert.y = -70; ert.addEventListener(MouseEvent.CLICK, kkk); function kkk(e:MouseEvent):void { removeChild(lkj); removeChild(ghj); removeChild(ert); ert.removeEventListener(MouseEvent.CLICK,kkk); ert.removeEventListener(KeyboardEvent.KEY_DOWN, onKeyboardDown); } ert.addEventListener(KeyboardEvent.KEY_DOWN, onKeyboardDown); function onKeyboardDown(event:KeyboardEvent):void { if (event.keyCode == 27) { removeChild(lkj); removeChild(ghj); removeChild(ert); ert.removeEventListener(MouseEvent.CLICK,kkk); ert.removeEventListener(KeyboardEvent.KEY_DOWN, onKeyboardDown); } } } } } } TypeError: Error #1006: removeEventListener не является функцией. at MethodInfo-31() как в nnn добавить this? а если сделать так: public function exit(e:MouseEvent):void { removeChild(btnInputMl1.e); removeChild(btnInputMl1.r); removeChild(btnInputMl1.t); removeChild(btnInputMl1.u); removeChild(btnInputMl1.muu); removeChild(btnInputMl1.a); removeChild(btnInputMl1.wx); wx.removeEventListener(MouseEvent.CLICK, exit); a.removeEventListener(MouseEvent.CLICK, loginFunction); trace("myau!!!!!"); this.addEventListener(MouseEvent.CLICK, nnn); } public function nnn(e:MouseEvent):void { pasword(); this.removeEventListener(MouseEvent.CLICK,nnn); } Последний раз редактировалось PesaDelo; 23.05.2013 в 17:33. |
|
|||||
Где у вас ошибка с лога не понятно, разбираться в этом ужасе желания нет.
Цитата:
Анонимки\замыкания не надо! использовать в подписках на события мыша. Имена типа bbbtttnnn - это просто ужас, как можно работать с таким кодом, непонятно( И this'ы у вас не по месту используются, лучше уберите их совсем
__________________
местонахождение |
|
|||||
Регистрация: May 2013
Сообщений: 8
|
Убрал this:
public function exit(e:MouseEvent):void { removeChild(btnInputMl1.e); removeChild(btnInputMl1.r); removeChild(btnInputMl1.t); removeChild(btnInputMl1.u); removeChild(btnInputMl1.muu); removeChild(btnInputMl1.a); removeChild(btnInputMl1.wx); wx.removeEventListener(MouseEvent.CLICK, exit); a.removeEventListener(MouseEvent.CLICK, loginFunction); trace("myau!!!!!"); addEventListener(MouseEvent.CLICK, clickHandler); } public function clickHandler(e:MouseEvent):void { pasword(); removeEventListener(MouseEvent.CLICK,clickHandler); } |
|
|||||
а trace("myau!!!!!"); срабатывает?
addEventListener(MouseEvent.CLICK, clickHandler); function clickHandler(e:MouseEvent):void { pasword(); removeEventListener(MouseEvent.CLICK,clickHandler); } убрав никчемную локальную функцию
__________________
местонахождение |
Часовой пояс GMT +4, время: 11:09. |
|
« Предыдущая тема | Следующая тема » |
|
|