Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   взять число из input text в переменку (http://www.flasher.ru/forum/showthread.php?t=135309)

JekelSkaz 20.01.2010 17:55

взять число из input text в переменку
 
есть input text с именем "metr" нужно число что я вписываю присваивать переменной...сейчас пишет 1067: Implicit coercion of a value of type String to an unrelated type int.
Как это сделать...и что в коде лишнее? что в коде не верно?

Код AS3:

package{
        import flash.display.MovieClip;
        import flash.events.Event;
        import flash.events.MouseEvent;
 
        public class golova extends MovieClip {
                public function golova() {
                        buta.addEventListener(MouseEvent.CLICK, clicked);
                }
                private function clicked(e:MouseEvent):void {
                        var colo:int = metr.text;
                        if(colo==1){
                        buta.visible=false;
                        }
                }
        }
}


Zebestov 20.01.2010 18:03

Код AS3:

var colo:int = int(metr.text);


JekelSkaz 20.01.2010 18:09

TypeError: Error #1009: Не удается вызвать свойство или метод со ссылкой на объект "null".
at golova()

etc 20.01.2010 18:11

Значит buta не существует.

JekelSkaz 20.01.2010 18:15

buta есть....все работает когда код вот такой:
Код AS3:

package{
        import flash.display.*;
        import flash.events.*;
 
        public class golova extends MovieClip {
 
 
                public function golova() {
                        buta.addEventListener(MouseEvent.CLICK, clicked);
                }
                private function clicked(e:MouseEvent):void {
 
                        buta.visible=false;
 
                }
        }
}

а так не работает:

Код AS3:

package{
        import flash.display.*;
        import flash.events.*;
 
        public class golova extends MovieClip {
 
                var colo:int = int(metr.text);
 
                public function golova() {
                        buta.addEventListener(MouseEvent.CLICK, clicked);
                }
                private function clicked(e:MouseEvent):void {
                        if(colo==1){
                        buta.visible=false;
                        }
                }
        }
}


etc 20.01.2010 18:19

Конечно не будет работать, metr ещё не инициализировано на момент инициализации colo.

И да, давайте классам и переменным нормальные имена, а не этот ужос.

JekelSkaz 20.01.2010 18:25

)))) как ее иницилизировать?

etc 20.01.2010 18:29

Вне методов и конструктора класса в таком виде никак.

JekelSkaz 20.01.2010 18:31

подскажите что делать? ну мне надо чтобы брало из инпута число

etc 20.01.2010 18:34

Писать соответствующий код. Вы хотите, чтобы я за вас написал?
Собственно, код в первом посте верен, за исключением необходимой правки из второго, а вас понесло неизвестно куда и зачем.

JekelSkaz 20.01.2010 18:37

понесло знач нужно)) 1120: Access of undefined property colo.??????
Код AS3:

package{
        import flash.display.*;
        import flash.events.*;
 
        public class golova extends MovieClip {
                public function golova() {
                        var colo:int = int(metr.text);
                        buta.addEventListener(MouseEvent.CLICK, clicked);
                }
                private function clicked(e:MouseEvent):void {
                        if(colo==1){
                        buta.visible=false;
                        }
                }
        }
}


etc 20.01.2010 18:41

Вы завели локальную переменную в конструкторе. Естесственно, таковой не будет в обработчике clicked.

JekelSkaz 20.01.2010 18:44

ну а как это сделать???

Добавлено через 1 минуту
ArgumentError: Error #1063: Несоответствие количества аргументов в golova/clicked(). Ожидалось 2, получено 1. что за ошибки странные)))

Код AS3:

package{
        import flash.display.*;
        import flash.events.*;
 
        public class golova extends MovieClip {
                public function golova() {
                        var colo:int = int(metr.text);
                        buta.addEventListener(MouseEvent.CLICK, clicked);
                }
                private function clicked(e:MouseEvent, colo):void {
                        if(colo==1){
                        buta.visible=false;
                        }
                }
        }
}


cleptoman 20.01.2010 18:47

Код AS3:

package{
        import flash.display.*;
        import flash.events.*;
 
        public class golova extends MovieClip {
              var colo:int
                public function golova() {
                        colo = int(metr.text);
                        buta.addEventListener(MouseEvent.CLICK, clicked);
                }
                private function clicked(e:MouseEvent):void {
                        if(colo==1){
                        buta.visible=false;
                        }
                }
        }
}


JekelSkaz 20.01.2010 18:51

ArgumentError: Error #1063: Несоответствие количества аргументов в golova/clicked(). Ожидалось 2, получено 1.

тот же еррор((

etc 20.01.2010 18:52

JekelSkaz, может вы уже вы перестанете методом ненаучного тыка код писать?

JekelSkaz 20.01.2010 18:53

ну дк помогите пожалуйста написать правильно

etc 20.01.2010 18:55

См. 14 пост. И да, код будете писать вы. Просто вы не понимаете того, что вам говорят, а если не понимаете элементарных вещей, то готовый код вам в принципе не поможет.

JekelSkaz 20.01.2010 18:57

странно...тогда не работал...теперь работает)) но ничего не происходит))
if не фурычит пишу в input text единичку и ничего((

etc 20.01.2010 19:00

А что должно происходить?

JekelSkaz 20.01.2010 19:03

Код AS3:

package{
        import flash.display.*;
        import flash.events.*;
 
        public class golova extends MovieClip {
              var colo:int
                public function golova() {
                        buta.addEventListener(MouseEvent.CLICK, clicked);
                }
                private function clicked(e:MouseEvent):void {
                        colo = int(metr.text);
                        if(colo==1){
                        buta.visible=false;
                        }
                }
        }
}

Все, так работает))) ну buta пропадать должна при нажатии при условии что в colo==1

etc 20.01.2010 19:10

Ну так впишите туда 1 и будет вам счастье.

JekelSkaz 20.01.2010 19:13

хммм) а как таймер сделать?) чтобы через 5 сек кнопка опять появилась...

leofit 20.01.2010 19:17

Таймеры - это самое сложное во флеше.. Придется Вам книгу открыть
http://help.adobe.com/ru_RU/AS3LCR/F...ils/Timer.html

JekelSkaz 20.01.2010 19:25

да как-то так оно...но ошибок куча(((
Код AS3:

package{
        import flash.display.*;
        import flash.events.*;
 
        public class golova extends MovieClip {
              var colo:int;
                          var timer:Timer = new Timer(500, 10);
                          timer.addEventListener(TimerEvent.TIMER, notifier);
 
                public function golova() {
                        buta.addEventListener(MouseEvent.CLICK, clicked);
                }
 
                private function clicked(e:MouseEvent):void {
                        colo = int(metr.text);
                        if(colo==1){
                        buta.visible=false;
                        timer.start();
                        }
                }
 
                private function notifier(event:TimerEvent):void {
                                buta.visible=true;
                }
        }
}


etc 20.01.2010 19:30

Потому что вы не понимаете, что пишете. Начните с основ. Для начала, как пишутся классы и как принято именовать их и переменные.

JekelSkaz 20.01.2010 19:33

хм, спасибо за мануал.....
работает...написано правильно? что желательно поменять?
Код AS3:

package{
        import flash.utils.Timer;
        import flash.display.*;
        import flash.events.*;
 
        public class golova extends MovieClip {
 
        var colo:int;
                var timer:Timer = new Timer(1000);
 
                public function golova() {
                        timer.addEventListener(TimerEvent.TIMER,notifier);
                        buta.addEventListener(MouseEvent.CLICK, clicked);
                }
 
                public function clicked(e:MouseEvent):void {
                        colo = int(metr.text);
                        if(colo==1){
                        buta.visible=false;
                        timer.start();
                        }
                }
 
                public function notifier(event:TimerEvent):void {
                                buta.visible=true;
                                timer.reset();
                }
        }
}


etc 20.01.2010 20:14

Проставить уровни доступа, указать нормальные названия переменных и классов. Заводить переменную colo в принципе не особо нужно, можно обойтись локальной переменной в clicked.


Часовой пояс GMT +4, время: 04:32.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.