![]() |
|
||||||||||
|
|
|
|||||
|
Регистрация: Jul 2013
Сообщений: 6
|
Здравствуйте, ребят, я новичек, и мне кое-что не понятно.. Собираюсь игрушку сделать) И столкнулся с такой проблемой: делал движение объекта стрелками, на временной диаграмме если код писать, то все получается; а в классе не работает..
Вот код) мы проверяем, нажаты ли клавиши, а исходя из этого перемещаем объект в нужные нам стороны. //объект называется cub import flash.events.KeyboardEvent; import flash.events.Event; stage.addEventListener(KeyboardEvent.KEY_DOWN, onKD); stage.addEventListener(KeyboardEvent.KEY_UP, onKU); var up:Boolean = false; var down:Boolean = false; var right:Boolean = false; var left:Boolean = false; var upS:Number = 1; var downS:Number = 1; var rightS:Number = 1; var leftS:Number = 1; function onKD(e:KeyboardEvent):void { if (e.keyCode == 37) { left = true; } if (e.keyCode == 38) { up = true; } if (e.keyCode == 39) { right = true; } if (e.keyCode == 40) { down = true; } } function onKU(e:KeyboardEvent):void { if (e.keyCode == 37) { left = false; } if (e.keyCode == 38) { up = false; } if (e.keyCode == 39) { right = false; } if (e.keyCode == 40) { down = false; } } stage.addEventListener(Event.ENTER_FRAME, onMovoHero); function onMovoHero(e:Event):void { if (left) { cub.x -= leftS; leftS ++; } else { cub.x -= leftS; leftS *= .7; } if (up) { cub.y -=upS; upS ++ ; } else { cub.y -=upS; upS *= .7; } if (right) { cub.x += rightS; rightS ++; } else { cub.x += rightS; rightS *= .7; } if (down) { cub.y += downS; downS ++; } else { cub.y += downS downS *= .7; } } stage.addEventListener(Event.ENTER_FRAME, sled); function sled(e:Event):void { swit } package { import flash.display.MovieClip; import flash.display.Stage; public class Movement extends MovieClip { var up:Boolean = false; var down:Boolean = false; var right:Boolean = false; var left:Boolean = false; var upS:Number = 1; var downS:Number = 1; var rightS:Number = 1; var leftS:Number = 1; public function Movement() { stage.addEventListener(KeyboardEvent.KEY_DOWN, onKD); stage.addEventListener(KeyboardEvent.KEY_UP, onKU); stage.addEventListener(Event.ENTER_FRAME, onMoveHero); } public function onKD(e:KeyboardEvent):void { if (e.keyCode == 37) { left = true; trace("12312") } if (e.keyCode == 38) { up = true; } if (e.keyCode == 39) { right = true; } if (e.keyCode == 40) { down = true; } } public function onKU(e:KeyboardEvent):void { if (e.keyCode == 37) { left = false; } if (e.keyCode == 38) { up = false; } if (e.keyCode == 39) { right = false; } if (e.keyCode == 40) { down = false; } } public function onMoveHero(e:Event):void { if (left) { trace("left"); this.x -= leftS; leftS++; } else { this.x -= leftS; leftS *= .7; } if (up) { this.y -= upS; upS++; } else { this.y -= upS; upS *= .7; } if (right) { this.x += rightS; rightS++; } else { this.x += rightS; rightS *= .7; } if (down) { this.y += downS; downS++; } else { this.y += downS; downS *= .7; } } } } /* в основном .fla файле создавал экземпляр класса: var cub:Movement = new Movement; addChild(cub); Но мувик не двигался и вообще не реагировал...................*/ |
|
|||||
|
Регистрация: Aug 2012
Сообщений: 297
|
Проблема в том, что в первом примере ты двигаешь своего персонажа, а во втором двигаешь сцену.
Ты добавляешь на сцену свой класс? package { import flash.display.MovieClip; import flash.display.Stage; public class Movement extends MovieClip { var cub:MovieClip; var up:Boolean = false; var down:Boolean = false; var right:Boolean = false; var left:Boolean = false; var upS:Number = 1; var downS:Number = 1; var rightS:Number = 1; var leftS:Number = 1; public function Movement(c:MovieClip) { cub = c; this.addEventListener(KeyboardEvent.KEY_DOWN, onKD); this.addEventListener(KeyboardEvent.KEY_UP, onKU); cub.addEventListener(Event.ENTER_FRAME, onMoveHero); } public function onKD(e:KeyboardEvent):void { if (e.keyCode == 37) { left = true; trace("12312") } if (e.keyCode == 38) { up = true; } if (e.keyCode == 39) { right = true; } if (e.keyCode == 40) { down = true; } } public function onKU(e:KeyboardEvent):void { if (e.keyCode == 37) { left = false; } if (e.keyCode == 38) { up = false; } if (e.keyCode == 39) { right = false; } if (e.keyCode == 40) { down = false; } } public function onMoveHero(e:Event):void { if (left) { trace("left"); cub.x -= leftS; leftS++; } else { cub.x -= leftS; leftS *= .7; } if (up) { cub.y -= upS; upS++; } else { cub.y -= upS; upS *= .7; } if (right) { cub.x += rightS; rightS++; } else { cub.x += rightS; rightS *= .7; } if (down) { cub.y += downS; downS++; } else { cub.y += downS; downS *= .7; } } } } /* В исходнике fla пишешь: var movement:Movement = new Movement(cub); //В качестве аргумента название твоего героя. */ |
|
|||||
|
Регистрация: Jul 2013
Сообщений: 6
|
Сделал все, как вы сказали, но все равно не пашет))
Я еще импортировал события (в тот раз забыл). Прикреплю файлы. |
|
|||||
|
Регистрация: Oct 2005
Сообщений: 217
|
А где файлы искать?
|
|
|||||
|
Регистрация: Oct 2005
Сообщений: 217
|
Вот архив с Вашим кодом, обратите внимание , когда откроете .fla в свойствах сцены и в поле Class заданно имя класса(это так называемый класс входа в программу).Ну соответственно пришлось подправить и ваш класс.
|
|
|||||
|
Регистрация: Jul 2013
Сообщений: 6
|
Спасибо за помощь!
Правда это получается класс, который запускается вместе с программой; а как можно сделать объект со свойствами этого класса (то есть можно было создавать несколько таких объектов и давать им разные имена, например)? |
|
|||||
|
Регистрация: Oct 2005
Сообщений: 217
|
Берете символ в библиотеке ,нажимаете правой кнопкой мыши , в списке выбираете свойства , и в поле базового класса вместо flash.display.MovieClip пишите имя своего класса , с требуемыми свойствами.чтобы создать экземпляр этого мувика , пишите так как вы писали
var cub = new Cub(); addChild(cub); Он будет обладать всем тем что вы напишете в классе. |
|
|||||
|
Регистрация: Jul 2013
Сообщений: 6
|
Спасибо, что объяснили)!!
|
|
|||||
|
Регистрация: Jul 2013
Сообщений: 6
|
Блин. У меня все равно не получилось так как вы сказали..
Я переписал заново: .fla .as Помогите разобраться, почему не работает програмка.. МувиКлип просто стоит на месте.. Это чем-то связанно со слушателями событий клавиатуры.. Они не работают, не знаю, почему... |
![]() |
![]() |
Часовой пояс GMT +4, время: 23:16. |
|
|
« Предыдущая тема | Следующая тема » |
|
|