Форум 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=140473)

tsarapkabel 31.05.2010 01:47

Класс, созданный автоматически и вручную работают по-разному!
 
Вложений: 2
Этот пример взят с сайта к книге http://www.learningactionscript3.com/

В примере рассматриваются 2 способа создания класса "Box".

Есть box
Код AS3:

package {
 
        import flash.display.MovieClip;
        import flash.display.Graphics;
        import flash.events.Event;
 
        public class Box extends MovieClip {
 
                public var color:uint = 0x000099;
 
                public function Box() {
            this.graphics.lineStyle(1, 0x000000);
                        this.graphics.beginFill(color);
            this.graphics.drawRect(0, 0, 100, 100);
            this.graphics.endFill();
 
                        this.addEventListener(Event.ENTER_FRAME, onLoop, false, 0, true);
                }
 
                private function onLoop(evt:Event):void {
                        this.x += 5;
                        trace(this, this.x);
                }
 
        }
}

есть square
Код AS3:

package {
 
        import flash.display.MovieClip;
        import flash.events.Event;
 
        public class Square extends MovieClip {
 
                public function Square() {
          this.addEventListener(Event.ENTER_FRAME, onLoop, false, 0, true);
                }
 
                private function onLoop(evt:Event):void {
                        this.x += 5;
                        trace(this, this.x);
                }
 
        }
}

И есть 2 способа создания экземпляра класса.

1 способ (ручной) - на таймлайне пишется
Код AS3:

import Box;
 
var box:Box = new Box();
addChild(box);

2 способ (автоматический) - когда в поле "Класс документа" пишут "Box".

Почему во время тестирования во втором варианте скорость передвижения square в 2 раза быстрее, чем в первом, несмотря на то, что square один и тот же и по трэйсу значения икса пишет одинаковые???

wvxvw 31.05.2010 02:16

Класс документа это и есть таймлайн, это не автоматическое создание. Просто если вы не указываете никакой класс документа, то будет просто MovieClip использоваться.

tsarapkabel 31.05.2010 02:44

Хммм... Ну ладно. :) А скорости-то почему разные?

wvxvw 31.05.2010 02:55

Понятия не имею, может фпс разный, может резолюция разная, может вы в каком-то из вариантов два раза за кадр двигаете вместо одного, а может вам кажется :) Еще Исаак Ньютон говорил, что скорость понятие относительное :)

tsarapkabel 31.05.2010 12:00

Вложений: 1
В том-то и дело, что всё одинаково. И если бы 2 раза за кадр двигал, то и трэйсил бы в 2 раза больше. Просто понять не могу, как так на ровном месте выдаёт не пойми что. :confused:

-De- 31.05.2010 12:21

Ох... во втором случае у тебя Square лежит ВНУТРИ Box. Сответственно его (Square) координаты это его координаты плюс координаты бокса.
Я думаю, тут поле "Класс документа" следует понимать как поле класс в свойствах символа в библиотеке.


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

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