Просмотр полной версии : Движение персонажа
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);}
}
}
}
stage.addEventListener...
Vansimar
19.10.2010, 18:13
1120: Access of undefined property Keyboard. вот это пишет
?
import flash.ui.Keyboard;
alekslitvinenk
19.10.2010, 18:18
забыли сделать import flash.ui.Keyboard
Предугадывая следующие вопросы:
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.
теперь пишет 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 секунд
та не выходит
Я вам даже ссылку дал на пример, как делать.
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
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 состоит из двух кадров ,как сделать чтоб если я жму вперед то загружался первый кадр, если вверх то второй?
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.