PDA

Просмотр полной версии : Не отображается созданный объект


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

Код класса корабля : 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;
}
}
}


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

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
Спасибо, но дело не в этом...Иначе можно было видеть ракету, пущенную за левой стороной сцены (координаты бы тогда были отрицательными и увеличивались).
И если строку addChild(missile); заменить на MovieClip(root).addChild(missile); то результат тот же...

iflamberg
28.04.2010, 18:41
какое еще?

MovieClip(root).addChild(missile);


пробуй так:


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
2Rzer, Это в первую очередь проверял...

КорДум
28.04.2010, 20:30
А чего у вас пакет зовется то main, то Main?

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

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

shtyftu
28.04.2010, 21:13
В том то и дело - если написать имя файла, то ошибку выдавал. А на это различие в регистре флеш внимания не обратил.
Для пущей уверенности сейчас еще раз проверил - на "Main.Missile" не ругается, а на "kojnvwsjne" выдает ошибку.
Еще раз спасибо!

upd: более того, если в свойствах символа нажать кнопку Edit calss definition рядом с неправравильным "Main.Missile", он откроет этот файл для редактирования. Думаю, тема исчерпана.