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

shtyftu 28.04.2010 16:17

Не отображается созданный объект
 
Делаю свою первую flash игру. Летящий корабль должен стрелять ракетами. Но при нажатии кнопки эта ракета не появляется. Хотя координата в функции EnterFrame изменяется.

Код класса корабля :
Код AS3:

import flash.display.MovieClip;
import flash.events.Event;
import flash.events.KeyboardEvent;
import flash.ui.Keyboard;
public class ship extends MovieClip {
        public function ship() {
                stage.addEventListener(KeyboardEvent.KEY_DOWN, KeyDown);
        }
        public function KeyDown(e:KeyboardEvent) {
                switch (e.keyCode) {
                        case Keyboard.SPACE :
                                var missile: Missile;
                                missile=new Missile;
                                addChild(missile);
                                missile.x=x;
                                missile.y=y;
                                break;
                }
        }
}

Код класса ракеты :
Код AS3:

import flash.display.MovieClip;
import flash.events.Event;
 
public class Missile extends MovieClip {
        public var speed:Number;
        public function Missile() {
                addEventListener("enterFrame", EnterFrame);
                speed=20;
        }
        public function EnterFrame(e:Event) {
                x+=speed;
        }
}


Rzer 28.04.2010 16:44

Ракета у тебя добавляется в корабль. missile.x=x; - координата относительно корабля.
На сцене она будет равна 2*ship.x; или добавляй ракеты на сцену, куда добавляется корабль, либо missile.x = 0;

shtyftu 28.04.2010 18:38

Спасибо, но дело не в этом...Иначе можно было видеть ракету, пущенную за левой стороной сцены (координаты бы тогда были отрицательными и увеличивались).
И если строку
Код AS3:

addChild(missile);

заменить на
Код AS3:

MovieClip(root).addChild(missile);

то результат тот же...

iflamberg 28.04.2010 18:41

какое еще?
Код AS3:

MovieClip(root).addChild(missile);

пробуй так:

Код AS3:

                                var missile: Missile;
                                missile=new Missile;
                                parent.addChild(missile);
                                missile.x=x;
                                missile.y=y;


shtyftu 28.04.2010 19:18

2iflamberg, спасибо, это исправил. Но проблема не в привязке координат. Даже если я строго задаю missile.x = 10; missile.y = 10; то изображения ракеты не появляется.

Rzer 28.04.2010 19:51

Значит к твоей ракете не привязано никакого символа из библиотеки. Должна стоять галочка Export for ActionSctipt и прописан класс Missile в свойствах символа.

shtyftu 28.04.2010 20:21

Вложений: 1
2Rzer, Это в первую очередь проверял...

КорДум 28.04.2010 20:30

А чего у вас пакет зовется то main, то Main?

shtyftu 28.04.2010 20:35

2КорДум, спасибо! Я дурной, не заметил...проблема решена.

КорДум 28.04.2010 20:39

И флеш никакого предупреждающего окна даже не выдал? Или вы просто не обратили внимания или когда-то поставили галочку "не показывать это окно больше"?


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

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