Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Передвижение всех элементов массива по .x и .y координатам. (http://www.flasher.ru/forum/showthread.php?t=147500)

Lyso 06.12.2010 15:23

Да, а так же влево и вправо. Именно все шары из массива.

medvedya2 06.12.2010 15:34

Код AS3:

stage.addEventListener(KeyboardEvent.KEY_DOWN,onKey);
function onKey(e:KeyboardEvent):void
                {
                        trace(e.keyCode);
                        var dy:int=0;
                        var dx:int=0;
                        var speed:int=10;
                        //здесь можно case сделать, но боюсь не поймете.
                                  if(e.keyCode=37)dx-=speed;
                        if(e.keyCode=38)dy-=speed;
                        if(e.keyCode=39)dx+=speed;
                        if(e.keyCode=40)dy+=speed;
 
                                for (var i=0; i<Ball.allBalls.length; i++) {
                                var port:Ball = Ball.allBalls[i];//по возможности указывайте тип
                                port.x +=  dx;
                                port.y +=  dy;
                        }
 
                }

подправил

Lyso 06.12.2010 15:51

Спасибо большое! case я отлично знаю :) Я хоть и нуб, но Мука читал ))

Добавлено через 2 минуты
Вылезло 4 ошибки:
строка 39 Warning: 1100: Присвоение внутри условного выражения. Вы имели в виду ==, а не =?

Все 4 такие же... Что делать?

medvedya2 06.12.2010 15:58

Код AS3:

       if(e.keyCode==37)dx-=speed;
      if(e.keyCode==38)dy-=speed;
      if(e.keyCode==39)dx+=speed;
      if(e.keyCode==40)dy+=speed;

30 мин назад на другом языке писал, перепутал синтаксис :)

Lyso 06.12.2010 16:01

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

Час от часу не легче... Я раньше понимал в чём ошибка, но не знал как исправить. А сейчас я просто в тупике...

medvedya2 06.12.2010 16:05

Код AS3:

import flash.display.Sprite; 
import flash.text.*;
import flash.events.KeyboardEvent;
 
stage.addEventListener(MouseEvent.CLICK,addBall);
 
function addBall(e:MouseEvent):void{
        var ball:Ball=new Ball();
        addChild(ball);
        ball.x=mouseX;
        ball.y=mouseY;
    myText.text= Ball.allBalls.length.toString(); //Вывод длины массива в текст.
}
stage.addEventListener(KeyboardEvent.KEY_DOWN,onKey);
function onKey(e:KeyboardEvent):void
                {
                        trace(e.keyCode);
                        var dy:int=0;
                        var dx:int=0;
                        var speed:int=10;
                        //здесь можно case сделать, но боюсь не поймете.
                                  if(e.keyCode==37)dx-=speed;
                                  if(e.keyCode==38)dy-=speed;
                                  if(e.keyCode==39)dx+=speed;
                                  if(e.keyCode==40)dy+=speed;
 
                                for (var i=0; i<Ball.allBalls.length; i++) {
                                var port:Ball = Ball.allBalls[i];//по возможности указывайте тип
                                port.x +=  dx;
                                port.y +=  dy;
                        }
 
                }

у вас так?

Lyso 06.12.2010 16:10

Теперь всё нормально, остался всего один небольшой нюанс :) Как сделать чтобы при задержании клавиш, функция выполнялась многократно, то есть если держать вверх, то лететь будет вверх пока не отпустишь...
Извините, я наглею, но очень хочу узнать!

medvedya2 06.12.2010 16:18

подсказки :)
Код AS3:

1.addEventListener(KeyboardEvent.KEY_UP,onKeyUp);
2.addEventListener(Event.ENTER_FRAME,onFrame);
3.dx и dy в глобальные переменые.


Lyso 06.12.2010 16:22

В смысле этот код засунуть в Ball.as? Я не понял подсказки :)

medvedya2 06.12.2010 16:23

Цитата:

Сообщение от Lyso (Сообщение 955349)
но очень хочу узнать!

тут не надо узнавать, тут надо придумывать алгоритм, и понимать принципы языка


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

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