Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Остановить движение в нужной точке (http://www.flasher.ru/forum/showthread.php?t=215372)

Comer 29.03.2018 22:20

Остановить движение в нужной точке
 
Я пока только учусь. Написал код вертикального движения одновременно нескольких объектов, которое происходит при нажатии на кнопки "вверх" (btn1), и "вниз" (btn2). Движение работает без проблем, но мне нужно, чтобы оно останавливалось, когда крайние объекты принимают значение у=30. Вроде всё правильно написал, но остановки не происходит. Подскажите мне, пожалуйста, как исправить ошибку!
Вот полный код:
Код AS3:

var MousetopDown: Boolean;
var MouseonDown: Boolean;
 
addEventListener(MouseEvent.MOUSE_UP, topUp);       
addEventListener(Event.ENTER_FRAME, topFrame);
 
addEventListener(MouseEvent.MOUSE_UP, onUp);       
addEventListener(Event.ENTER_FRAME, onFrame);       
 
btn1.addEventListener(MouseEvent.MOUSE_DOWN, topDown);
 
        function topDown(e: MouseEvent): void
                {
                        this.MousetopDown = true;
                }
 
                function topUp(e: MouseEvent): void
                {
                        this.MousetopDown = false;
                }
 
 
                function topFrame(e: Event): void
                {
                        if (this.MousetopDown)
                        {
                                img1.y += -5;
                                img2.y += -5;
                                img3.y += -5;
                                img4.y += -5;
                                img5.y += -5;
                        }
                        if (img5.y ==30)
                        {
                                MousetopDown = false;
                        }
                }
 
btn2.addEventListener(MouseEvent.MOUSE_DOWN, onDown);
 
        function onDown(e: MouseEvent): void
                {
                        this.MouseonDown = true;
                }
 
                function onUp(e: MouseEvent): void
                {
                        this.MouseonDown = false;
                }
 
 
                function onFrame(e: Event): void
                {
                        if (this.MouseonDown)
                        {
                                img1.y += 5;
                                img2.y += 5;
                                img3.y += 5;
                                img4.y += 5;
                                img5.y += 5;
                        }
                        if (img1.y ==30)
                        {
                                MouseonDown = false;
                        }
                }


Wolsh 30.03.2018 00:14

Возможно, "==30" — слишком жесткое условие, и оно не выполняется. Тогда нужно использовать >= и <=.
(всмысле, начальные координаты img# могут быть не кратны 5. Если img1 стоит изначально на у=4 или у=5.03, то у никогда не станет равен 30 при изменении на ровно 5).

Comer 30.03.2018 07:17

Цитата:

Сообщение от Wolsh (Сообщение 1204776)
Возможно, "==30" — слишком жесткое условие, и оно не выполняется. Тогда нужно использовать >= и <=.

Точно! Так и есть. Заменил == на >= и <=, и всё заработало! Ура! Спасибо Вам огромное!!!


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

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