PDA

Просмотр полной версии : Движение персонажа


Vansimar
19.10.2010, 17:57
Народ,подскажите как сделать движение персонажа по нажатию на клавишу, мой код не работает package game{
import flash.display.*;
import flash.events.*;


public dynamic class pers extends MovieClip {

public function pers() {


addEventListener(KeyboardEvent.KEY_DOWN, persGo);
}

public function persGo(event:KeyboardEvent):void{
if (event.keyCode == Keyboard.KEYNAME_RIGHTARROW){
pers.gotoAndPlay(1);}
}
}
}

i.o.
19.10.2010, 18:05
stage.addEventListener...

Vansimar
19.10.2010, 18:13
1120: Access of undefined property Keyboard. вот это пишет

Bgg
19.10.2010, 18:18
?
import flash.ui.Keyboard;

alekslitvinenk
19.10.2010, 18:18
забыли сделать import flash.ui.Keyboard

КорДум
19.10.2010, 19:56
Предугадывая следующие вопросы:
http://www.flasher.ru/forum/showthread.php?t=124979&highlight=wasd

Vansimar
19.10.2010, 22:45
теперь пишет 1119: Access of possibly undefined property KEYNAME_RIGHTARROW through a reference with static type Class.

gr_crd
19.10.2010, 22:52
теперь пишет 1119: Access of possibly undefined property KEYNAME_RIGHTARROW through a reference with static type Class.
Правильно "пишет", нет такого свойства.
Зато есть Keyboard.RIGHT;

Vansimar
19.10.2010, 23:07
большое спасибо, помогло))

Добавлено через 22 минуты
и еще очень надо ,я никак не разберусь, вот смотрите,допустим у меня есть класс персонажа в pers.as ,у меня есть мувиклип называемый pers_cont, в нем два кадра, в первом мувик pers_stay(состояние когда персонаж стоит) во втором pers_go( состояние когда персонаж идет),вот, в линкедже мувика pers_cont указан класс game.pers , и инстанс у него же(pers_cont ) указан такой же,те(pers_cont ) я не понимаю когда использовать инстанс, мне нужно из этого класса pers.as обратиться к мувику pers_cont и чтоб воспроизвести 1 или 2 кадр,как мне это сделать??и объясните пожалуйста,когда нужно использовать инстанс! спасибо,жду ответа

Vansimar
24.10.2010, 14:35
люди,не получается сделать чтоб мувиклип двигался,помогите

public function rightX(event:KeyboardEvent):void{
if (event.keyCode == Keyboard.RIGHT){
cont.x+=30; //cont - инстанс найм мувика который надо двигать
event.updateAfterEvent();}
}

Добавлено через 30 секунд
та не выходит

КорДум
24.10.2010, 14:36
Я вам даже ссылку дал на пример, как делать.

Vansimar
24.10.2010, 16:51
нужна помощь, не получается сделать чтоб мувик двигался,помогите вот код класса где управление происходитpackage game{
import flash.display.*;
import flash.events.*;
import flash.ui.Keyboard;
import game.*;

public dynamic class pers extends MovieClip {
wasd:Array;


public function pers() {


new WASDcontroler(this.wasd=new Array ,stage);
addEventListener(Event.ENTER_FRAME, enterFrameHandler);

}

public function enterFrameHandler(evt:Event = null):void {
if (this.wasd[0]==true) {
this.cont_per.x+=5;
}
if (this.wasd[1]==true) {
this.cont_per.x-=5;
}
if (this.wasd[2]==true) {
this.cont_pert.y-=50;
}
if (this.wasd[3]==true) {
this.cont_per.y+=5;
}
}
}
}

Добавлено через 33 секунды
а вот код класса управления package game{
import flash.display.*;
import flash.events.*;
import flash.text.*;
import flash.ui.Keyboard;

public class WASDcontroler {
public var wasdArr:Array,
stage:Stage;
public function WASDcontroler(_wasdArr:Array, _stage:Stage) {
wasdArr=_wasdArr;
stage=_stage;
stage.addEventListener(KeyboardEvent.KEY_DOWN,keyDownHandler);
stage.addEventListener(KeyboardEvent.KEY_UP,keyUpHandler);
}

/*---------------------функция реагирования на нажатие клавиш-----------------------------*/
public function keyDownHandler(evt:KeyboardEvent):void {

//Keyboard.UP прыжок
//Keyboard.LEFT влево
//Keyboard.DOWN присесть
//Keyboard.RIGHT вправо
if (evt.keyCode==Keyboard.UP) {
wasdArr[0]=true;
}
if (evt.keyCode==Keyboard.LEFT) {
wasdArr[1]=true;
}
if (evt.keyCode==Keyboard.DOWN) {
wasdArr[2]=true;
}
if (evt.keyCode==Keyboard.RIGHT) {
wasdArr[3]=true;
}
}

public function keyUpHandler(evt:KeyboardEvent):void {
if (evt.keyCode==Keyboard.UP) {
wasdArr[0]=false;
}
if (evt.keyCode==Keyboard.LEFT) {
wasdArr[1]=false;
}
if (evt.keyCode==Keyboard.DOWN) {
wasdArr[2]=false;
}
if (evt.keyCode==Keyboard.RIGHT) {
wasdArr[3]=false;
}
}

}

}

Добавлено через 1 минуту
компилятор ошибок не выдает, но и ничего не работает,должен дигаться мувик с инстанс наймом cont_per

КорДум
24.10.2010, 17:29
this.cont_pert
А где у вашего класса определена эта переменная? Наверно нужно создать сначала персонажа, а уже потом с ним что-то делать. Хотя, судя по всему, так как класс расширен от MovieClip, то он прилинкован к символу игрока. То есть нужно обращаться просто - this. Черт знает, как у вас там все устроено.

cleptoman
24.10.2010, 17:41
ну он и писал что залинковать не может.

пропишите в поле Class в библиотеке game.pers

тогда this.x+=5; //и так далее

и учитесь сразу именовать классы с большой буквы (Pers)

Vansimar
24.10.2010, 17:57
спасибо,и еще вот,cont_per состоит из двух кадров ,как сделать чтоб если я жму вперед то загружался первый кадр, если вверх то второй?

КорДум
24.10.2010, 18:08
this.gotoAndStop();