![]() |
|
||||||||||
|
|||||
|
Регистрация: Apr 2010
Сообщений: 13
|
Здравствуйте! Пишу простенькую игру вот её код :
stage.addEventListener(KeyboardEvent.KEY_DOWN,key_down) stage.addEventListener(KeyboardEvent.KEY_UP,key_up) var power:Number = 0.96; var friction:Number = 0.95; var count:Number =0; var up:Boolean = false; var down:Boolean = false; var left:Boolean = false; var right:Boolean = false; var speed:Number = 0; var gradusRot:Number =4; var gradus:Number = 0; var radian:Number ; var speedX:Number; var speedY:Number; function key_down(e:KeyboardEvent) :void { trace(e.keyCode); 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 key_up(e:KeyboardEvent) :void { trace(e.keyCode); if (e.keyCode == 37) { left = false; } if (e.keyCode == 38) { up = false; } if (e.keyCode == 39) { right = false; } if (e.keyCode == 40) { down = false; } } addEventListener (Event.ENTER_FRAME, moveCar); function moveCar (e:Event): void { if (left) { gradus -= gradusRot; } if (up) { speed += power; } if (right) { gradus += gradusRot; } if (down) { speed -= power; } speed *= friction; radian = (gradus * Math.PI)/180; var speedX = speed*Math.cos(radian); var speedY = speed*Math.sin(radian); car_mc.rotation = gradus; car_mc.x += speedX; car_mc.y += speedY; if (car_mc.x > 500+40) { car_mc.x = 0-40; } if (car_mc.x < 0-40) { car_mc.x = 500+40; } if (car_mc.y > 500+40) { car_mc.y = 0-40; } if (car_mc.y < 0-40) { car_mc.y = 500+40; } if (car_mc.hitTestObject(coin_mc)) { coin_mc.x = Math.random()*500; coin_mc.y = Math.random()*500; count ++; trace(count); } hitStage () { function hitStage():void { if (car_mc.x>500-40){ car_mc.x=500-40 speed=-speed*0.5 } if (car_mc.x<0+40){ car_mc.x=0+40 speed=-speed*0.5 } if (car_mc.y>500-40){ car_mc.y=500-40 speed=-speed*0.5 } if (car_mc.y<0+40){ car_mc.y=0+40 speed=-speed*0.5 } } } } Flash ругается что для использование класса Цитата:
|
|
|||||
package { import flash.display.Sprite; import flash.events.Event; import flash.events.KeyboardEvent; import flash.display.MovieClip; public class Car extends Sprite { private static const POWER:Number = 0.96; private static const FRICTION:Number = 0.95; private static const GRAD_STEP:Number = 4.00; private var count:Number = 0; private var up:Boolean = false; private var down:Boolean = false; private var left:Boolean = false; private var right:Boolean = false; private var speed:Number = 0; private var speedX:Number; private var speedY:Number; private var gradus:Number = 0; private var radian:Number; public function Car() { if (stage) { init(); } else { addEventListener(Event.ADDED_TO_STAGE, init); } } private function init(event:Event = null):void { stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDownHandler); stage.addEventListener(KeyboardEvent.KEY_UP, onKeyUpHandler); addEventListener(Event.ENTER_FRAME, onEnterFrameHandler); } private function onKeyDownHandler(event:KeyboardEvent):void { if (event.keyCode == 37) { left = true; } else if (event.keyCode == 38) { up = true; } else if (event.keyCode == 39) { right = true; } else if (event.keyCode == 40) { down = true; } } private function onKeyUpHandler(event:KeyboardEvent):void { if (event.keyCode == 37) { left = false; } else if (event.keyCode == 38) { up = false; } else if (event.keyCode == 39) { right = false; } else if (event.keyCode == 40) { down = false; } } function onEnterFrameHandler(event:Event):void { if (left) { gradus -= GRAD_STEP; } if (up) { speed += POWER; } if (right) { gradus += GRAD_STEP; } if (down) { speed -= POWER; } speed *= FRICTION; radian = (gradus * Math.PI) / 180; speedX = speed * Math.cos(radian); speedY = speed * Math.sin(radian); rotation = gradus; x += speedX; y += speedY; if (hitTestObject((parent as MovieClip).coin_mc)) { (parent as MovieClip).coin_mc.x = Math.random() * 500; (parent as MovieClip).coin_mc.y = Math.random() * 500; count++; trace(count); } if (x > 500 - 40) { x = 500 - 40; speed = - speed * 0.5; } else if (x < 0 + 40) { x = 0 + 40; speed = - speed * 0.5; } if (y > 500 - 40) { y = 500 - 40; speed = - speed * 0.5; } else if (y < 0 + 40) { y = 0 + 40; speed = - speed * 0.5; } } } } |
|
|||||
|
Регистрация: Apr 2010
Сообщений: 13
|
Цитата:
|
|
|||||
|
Banned
[+1 05.11.11]
[+1 09.08.11] Регистрация: Jan 2010
Адрес: РФ. Кемеровская область
Сообщений: 3,243
|
Если сделать класс Cars документ-классом (т.е. прописать его в панели Proprties во флеш иде), то нет.
|
|
|||||
|
Цитата:
Но можно и по другому. Вы создаете файл Car.as и кладете его рядом с .fla файлом. Создаете MovieClip и рисуете в нем машинку. В библиотеке находите ваш MovieClip с машиной и нажимаете правой кнопкой и выбираете Properties. Нажимаете Export for AS и в поле Class пишете Car. Перетаскиваете MovieClip с машиной на сцену. Компилируете и запускаете. |
|
|||||
|
Регистрация: Apr 2010
Сообщений: 13
|
Всем спасибо буду побывать
А вообще как лучше? Создавать As файл или в кадре все коды писать? |
|
|||||
|
Регистрация: Apr 2010
Сообщений: 13
|
Вообще попробовал как вы сказали :-(
Создал файл fla и as в одном месте на диске С: в файл *.as я скопировал это : package { import flash.display.Sprite; import flash.events.Event; import flash.events.KeyboardEvent; import flash.display.MovieClip; public class Car extends Sprite { private static const POWER:Number = 0.96; private static const FRICTION:Number = 0.95; private static const GRAD_STEP:Number = 4.00; private var count:Number = 0; private var up:Boolean = false; private var down:Boolean = false; private var left:Boolean = false; private var right:Boolean = false; private var speed:Number = 0; private var speedX:Number; private var speedY:Number; private var gradus:Number = 0; private var radian:Number; public function Car() { if (stage) { init(); } else { addEventListener(Event.ADDED_TO_STAGE, init); } } private function init(event:Event = null):void { stage.addEventListener(KeyboardEvent.KEY_DOWN, onKeyDownHandler); stage.addEventListener(KeyboardEvent.KEY_UP, onKeyUpHandler); addEventListener(Event.ENTER_FRAME, onEnterFrameHandler); } private function onKeyDownHandler(event:KeyboardEvent):void { if (event.keyCode == 37) { left = true; } else if (event.keyCode == 38) { up = true; } else if (event.keyCode == 39) { right = true; } else if (event.keyCode == 40) { down = true; } } private function onKeyUpHandler(event:KeyboardEvent):void { if (event.keyCode == 37) { left = false; } else if (event.keyCode == 38) { up = false; } else if (event.keyCode == 39) { right = false; } else if (event.keyCode == 40) { down = false; } } function onEnterFrameHandler(event:Event):void { if (left) { gradus -= GRAD_STEP; } if (up) { speed += POWER; } if (right) { gradus += GRAD_STEP; } if (down) { speed -= POWER; } speed *= FRICTION; radian = (gradus * Math.PI) / 180; speedX = speed * Math.cos(radian); speedY = speed * Math.sin(radian); rotation = gradus; x += speedX; y += speedY; if (hitTestObject((parent as MovieClip).coin_mc)) { (parent as MovieClip).coin_mc.x = Math.random() * 500; (parent as MovieClip).coin_mc.y = Math.random() * 500; count++; trace(count); } if (x > 500 - 40) { x = 500 - 40; speed = - speed * 0.5; } else if (x < 0 + 40) { x = 0 + 40; speed = - speed * 0.5; } if (y > 500 - 40) { y = 500 - 40; speed = - speed * 0.5; } else if (y < 0 + 40) { y = 0 + 40; speed = - speed * 0.5; } } } } Цитата:
и trace ни чего не выдает. Последний раз редактировалось TocTbIP; 22.08.2011 в 18:18. |
|
|||||
|
У вас на сцене есть мувиклип с именем "coin_mc"?
В библиотеке у вас также как на приложенной картинке? Можете показать исходники? Последний раз редактировалось TWETTI; 22.08.2011 в 18:24. |
![]() |
![]() |
Часовой пояс GMT +4, время: 21:25. |
|
|
« Предыдущая тема | Следующая тема » |
|
|