Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   метод класса setRandomPosition(). (http://www.flasher.ru/forum/showthread.php?t=193973)

Tina 05.02.2013 17:44

метод класса setRandomPosition().
 
Подскажите пожалуйста что это такое и как его использовать?

iflamberg 05.02.2013 17:53

Мы что тут телепаты? Это не из actionscript 3 API. Судя по названию вашей темы - это функция класса. Тогда это вам лучше знать, что это за класс и как его использовать.

Hauts 05.02.2013 17:55

Делаю ставку: это метод для установки произвольного положения чего-то :)

Tina 05.02.2013 18:32

Ну в общем то да. Просто я вообще то думала что это из AS3. Но теперь уже поняла, что это из моего класса будет. Тогда вопрос такой. Как создать метод класса? Просто было задание установить рисунок на случайной позиции на сцене. Я это сделала, а теперь нужно сделать тоже самое методом класса.

dimarik 05.02.2013 20:24

Резюме заполняете?

Tina 05.02.2013 21:09

да нет просто AS3 учу. Я только начинаю. И сразу извиняюсь, если кому-то вопросы покажутся тупыми.

dimarik 05.02.2013 22:35

В некотором виде так выглядит метод класса
Код AS3:

package {
    class Foo {
        static function setRandomPosition():void {
            // method body
        }
    }
}


caseyryan 05.02.2013 22:55

Код AS3:

package {
        public class RandomPositioner extends Sprite {
                  private var _image:Bitmap = new Bitmap(new BitmapData(100, 100, 0xff0000, false));
                  public function RandomPositioner() {
                          if (stage) init();
                          else addEventListener(Event.ADDED_TO_STAGE, init);
                  }
                  private function init(e:Event = null):void {
                          setRandomPosition();
                  }
                  private function setRandomPosition():void {
                          if (stage == null) return;
                          _image.x = stage.stageWidth * Math.random();
                          _image.y = stage.stageHeight * Math.random();
                  }
        }
}

что-то типа того

Tina 05.02.2013 23:17

Я наверное лучше выложу код. Может по ходу кода подскажите как это лучше сделать.
Код AS3:

package 
{
        import flash.display.MovieClip;
        import flash.display.Sprite;
        import flash.events.Event;
        import new_packege.Ball;
 
        public class Main extends Sprite
        {
                public var ball1:Ball;
                public var ball2:Ball;
                public function Main()
                {
                        ball1 = new Ball();
                        ball1.x = Math.random() * (stage.stageWidth - ball1.width);
                        ball1.y = Math.random() * (stage.stageHeight - ball1.height);
                        addChild(ball1);
                        ball2 = new Ball();
                        ball2.x = Math.random() * (stage.stageWidth - ball2.width);
                        ball2.y = Math.random() * (stage.stageHeight - ball2.height);
                        addChild(ball2);
                        addEventListener(Event.ENTER_FRAME, onLoop1);
                        addEventListener(Event.ENTER_FRAME, onLoop2);
                }
                private function onLoop1(evt:Event):void
                {
                        ball1.move(ball1);
                }
                private function onLoop2(evt:Event):void
                {
                        ball2.move(ball2);
                }
        }
}

А это класс который я создала, чтоб после из него создать шарики.
Код AS3:

package new_packege 
{
        import flash.display.Sprite;
 
        public class Ball extends Sprite
        {
                public var speed:int = 10;
                public function Ball()
                {
                        graphics.beginFill(0x0000FF);
                        graphics.drawCircle(50, 50, 50);
                }
                public function move(bl:Ball):void
                {
                        bl.x += speed;
                        if (bl.x >= stage.stageWidth - bl.width || bl.x < 0)
                        {
                                speed *= -1;
                        }
                }
        }
}

Вот так это выглядит сейчас. А мне нужно чтобы шарики добавлялись на сцену методом класса. Это я так понимаю из Ball делать нужно. Подскажите как пожалуйста.

caseyryan 06.02.2013 07:10

Код AS3:

package 
{
        import flash.display.MovieClip;
        import flash.display.Sprite;
        import flash.events.Event;
        import new_packege.Ball;
 
        public class Main extends Sprite
        {
                public var ball1:Ball;
                public var ball2:Ball;
                public function Main()
                {
                        ball1 = new Ball();
                        ball2 = new Ball();       
                                setRandomPosition();
                }
                      public function setRandomPosition():void {
                                ball1.x = Math.random() * (stage.stageWidth - ball1.width);
                        ball1.y = Math.random() * (stage.stageHeight - ball1.height);
                        addChild(ball1);
                                ball2.x = Math.random() * (stage.stageWidth - ball2.width);
                        ball2.y = Math.random() * (stage.stageHeight - ball2.height);
                        addChild(ball2);
                                  if (!hasEventListener(Event.ENTER_FRAME)) {
                                          addEventListener(Event.ENTER_FRAME, onLoop1); // второй слушатель enterFrame тут не нужен
                                  }
                      }
 
                private function onLoop1(evt:Event):void
                {
                        ball1.move(); // не нужно ему передавать ссылку на себя, убрал ее отсюда, так как она у него и так есть
                                  ball2.move();
                }
 
        }
}

Код AS3:

package new_packege 
{
        import flash.display.Sprite;
 
        public class Ball extends Sprite
        {
                public var speed:int = 10;
                public function Ball()
                {
                        graphics.beginFill(0x0000FF);
                        graphics.drawCircle(50, 50, 50);
                }
                public function move():void
                {
                        this.x += speed;
                        if (this.x >= stage.stageWidth - this.width || this.x < 0)
                        {
                                speed *= -1;
                        }
                }
        }
}



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

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