Форум Flasher.ru

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

zinchencko 28.01.2008 12:07

If - условие не выполняеться
 
Есть следуюший код, куда бы не нажимал, все равно действие выполняется.

Код:

package {

        import flash.display.Sprite;
        import flash.display.MovieClip;
        import flash.events.MouseEvent;

        public class Main extends Sprite {
                var inform:int = 1;

                public function Main() {

                        add_btn.buttonMode = true;
                        del_btn.buttonMode = true;
                        add_btn.addEventListener(MouseEvent.CLICK, addFun);
                        del_btn.addEventListener(MouseEvent.CLICK, delFun);

                }

                public function addFun(e:MouseEvent):void {
                        if (inform == 1) {
                                addfuninit();
                        }

                }
                private function addfuninit():void {

                        var inform:Number = 0;
                        trace(inform);


                }
                private function delFun(e:MouseEvent):void {
                        if (inform == 0) {
                                var inform:int = 1;
                                trace(inform);
                        }
                }
        }
}


sqMax 28.01.2008 14:02

А зачем ты в функциях локальные версии переменной создаешь???
Имхо, поэтому и не работает.

zinchencko 28.01.2008 14:14

а куда надо писать локальные переменные тогда?

Ajshma 28.01.2008 14:32

Код:

if (inform == 1) {
                                addfuninit();
                        }

Ты вызываешь addfuninit, которая должна изменять глобальную переменную inform. Но inform из addfuninit недоступно для addFun, так как ты ее создаешь локальной только для addfuninit.
Вообщем так примерно:
Код:

package {

        import flash.display.Sprite;
        import flash.display.MovieClip;
        import flash.events.MouseEvent;

        public class Main extends Sprite {
                public var inform:int = 1;

                public function Main() {

                        add_btn.buttonMode = true;
                        del_btn.buttonMode = true;
                        add_btn.addEventListener(MouseEvent.CLICK, addFun);
                        del_btn.addEventListener(MouseEvent.CLICK, delFun);

                }

                public function addFun(e:MouseEvent):void {
                                     
                        if (inform == 1) {
                                addfuninit();
                        }

                }
                private function addfuninit():void {

                            inform = 0;
                        trace(inform);


                }
                private function delFun(e:MouseEvent):void {
                        if (inform == 0) {
                        inform = 1;
                                trace(inform);
                        }
                }
        }
}


zinchencko 28.01.2008 17:35

все равно не работает.

Код:

package {

        import flash.display.Sprite;
        import flash.display.MovieClip;
        import flash.events.MouseEvent;

        public class Main extends Sprite {
                public var inform:int = 1;

                public function Main() {

                        add_btn.buttonMode = true;
                        del_btn.buttonMode = true;
                        add_btn.addEventListener(MouseEvent.CLICK, addFun);
                        del_btn.addEventListener(MouseEvent.CLICK, delFun);

                }

                public function addFun(e:MouseEvent):void {
                        if (inform == 1) {
                                var inform:int = 0;
                                trace(inform);
                        }

                }
                public function delFun(e:MouseEvent):void {
                        if (inform == 0) {
                                var inform:int = 1;
                                trace(inform);
                        }
                }
        }
}


Ajshma 28.01.2008 21:39

Ты издеваешься?
Внимательнее смотри, что я тебе написал.
Какого перепуга ты в каждом методе var inform:int = 1; пишешь?!
Ты ее определил уже в самом начале!
Далее надо писать - просто inform= 1;

BlooDHounD 28.01.2008 21:48

что бы не было такого идиотизма надо всегда писать this.

zinchencko 28.01.2008 22:28

извеняюсь за невнимательность...


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

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