![]() |
|
||||||||||
|
|||||||
|
|
« Предыдущая тема | Следующая тема » |
| Опции темы | Опции просмотра |
|
![]() |
![]() |
|
|||||
|
Регистрация: Mar 2009
Адрес: this.x=0;this.y=0;this.z=0
Сообщений: 89
|
2kseniya, а есть разница между кодом в кадре и кодом в классе? Ну всмысле в чем плюсы, минусы?
|
|
|||||
|
Регистрация: Oct 2010
Адрес: Новосиб
Сообщений: 122
|
писать в кадрах зло)
конечно лучше в классе, например: такой способ хранения лучше чем хранить в массиве. меньше путаницы и проблем. Последний раз редактировалось kseniya; 20.03.2011 в 13:09. |
|
|||||
|
Не смог открыть твой пример.
Написал свой. package{ import flash.display.Sprite; import flash.display.MovieClip; import flash.events.Event; import flash.events.KeyboardEvent; import flash.utils.Dictionary; import flash.ui.Keyboard; import flash.display.DisplayObject; import flash.display.DisplayObjectContainer; import flashx.textLayout.formats.Direction; import flash.geom.Point; import flash.events.MouseEvent; public class Main extends MovieClip { private var _keys : Array = new Array(); private var _ball : MovingObject; private var _bullets : Vector.<MovingObject> = new Vector.<MovingObject>(); public function Main() { _ball = new MovingObject(createBall()); _ball.speed = 5; addChild(_ball); stage.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler); stage.addEventListener(KeyboardEvent.KEY_UP, keyUpHandler); stage.addEventListener(Event.ENTER_FRAME, enterFrameHandler); stage.addEventListener(MouseEvent.CLICK, clickHandler); } private function createBall(radius : Number = 10, color : uint = 0x0):Sprite{ var ball : Sprite = new Sprite(); ball.graphics.beginFill(color, 0.5); ball.graphics.drawCircle(0,0, radius); return ball; } private function clickHandler(event : MouseEvent):void{ makeShot(); } private function makeShot():void{ var bullet : MovingObject = new MovingObject(createBall(5, 0xFF)); var vector : Point = new Point(); addChild(bullet); _bullets.push(bullet); // задаем начальные координаты пули bullet.x = _ball.x; bullet.y = _ball.y; // получаем вектор движения пули vector.x = stage.mouseX - _ball.x; vector.y = stage.mouseY - _ball.y; // нормализуем вектор vector.normalize(1); // задаем направление пули найденным вектором bullet.direction = vector; bullet.speed = 10; } private function keyDownHandler(event : KeyboardEvent):void{ _keys[event.keyCode] = true; } private function keyUpHandler(event : KeyboardEvent):void{ _keys[event.keyCode] = false; } private function enterFrameHandler(event : Event):void{ handleKeys(); refreshPositions(); } private function refreshPositions():void{ refreshPosition(_ball); for(var i : int = 0; i < _bullets.length; i++){ var bullet : MovingObject = _bullets[i]; refreshPosition(bullet, true); } } private function refreshPosition(object : MovingObject, noReturn : Boolean = false):void{ object.x += object.direction.x * object.speed; object.y += object.direction.y * object.speed; if(noReturn){ return; } if(object.x < 0){ object.x = stage.stageWidth; } else if(object.x > stage.stageWidth){ object.x = 0; } if(object.y < 0){ object.y = stage.stageHeight; } else if(object.y > stage.stageHeight){ object.y = 0; } } private function handleKeys():void{ _ball.direction = new Point(0,0); for(var key : String in _keys){ if(!_keys[key]){ continue; } switch(parseInt(key)){ case Keyboard.DOWN: _ball.direction.y += 1 ; break; case Keyboard.UP: _ball.direction.y -= 1; break; case Keyboard.LEFT: _ball.direction.x -= 1; break; case Keyboard.RIGHT: _ball.direction.x += 1; break; } } } } } import flash.display.Sprite; import flash.display.DisplayObject; import flash.geom.Point; internal class MovingObject extends Sprite{ private var _direction : Point = new Point(0,0); private var _view : DisplayObject; private var _speed : Number; public function MovingObject(view : DisplayObject = null){ setView(view); } public function setView(view : DisplayObject):void{ if(_view){ removeChild(_view); } _view = view; if(_view){ addChild(_view); } } public function set speed(speed : Number):void{ _speed = speed; } public function get speed():Number{ return _speed; } public function set direction(direction : Point):void{ _direction = direction; } public function get direction():Point{ return _direction; } }
__________________
9 из 10 голосов в моей голове сказали наркотикам "НЕТ" Мои ачивки: художник-паразит. |
|
|||||
|
Регистрация: Mar 2009
Адрес: this.x=0;this.y=0;this.z=0
Сообщений: 89
|
я все время пишу в классах, поэтому и спрашиваю в чем разница и ответ "писать в кадрах - зло" просто умиляет
![]() Добавлено через 17 минут Цитата:
пишу обобщенно, к словам не придираться имеется ввиду что код притерпевает некоторые изменения при перенесении в класс ("package{" и т.д.) |
|
|||||
|
Регистрация: Oct 2010
Адрес: Новосиб
Сообщений: 122
|
Цитата:
- нет строгости к import'у экземпляров предопределённых классов - нет строгости к объявлению типов переменных что есть хорошо когда эксперементируешь Минусы: - Код в кадрах компилируется в динамический класс MainTimeline, что есть плохо, не правильно, затрата ресурсов процессора - Код в кадрах только для Flash IDE, разработчики с FB или FD не смогут его править. - Не будет чёткой архитектуры проекта, более 2к строчек кода на одном кадре и разбираться будет сложновато Вы такой ответ ожидали? А вобще из сообщения выше этого достаточно чтобы запихать переменные в Ball, ничего создавать или писать ещё не нужно. Последний раз редактировалось kseniya; 20.03.2011 в 13:37. |
|
|||||
|
Регистрация: Mar 2009
Адрес: this.x=0;this.y=0;this.z=0
Сообщений: 89
|
да, все ясно, спасибо)
А вообще, автору неплохо было бы почитать какую-нибудь правильную литературу например "Колин Мук - Actionscript 3.0 для Flash" и подобные темы как данный топик его уж точно не привели бы в ступор. Последний раз редактировалось cr0w312; 20.03.2011 в 13:45. |
|
|||||
|
Регистрация: Mar 2011
Адрес: Ibiza
Сообщений: 13
|
+1,
спасибо.. проблема решилась хранить speedXFROM и speedYFROM в шарике тоже была такая идея но не знал как правильно осуществить.. сейчас все получилось.. спасибо за помощь |
|
|||||
|
А все же хранить отдельно скорость, а отдельно направление куда правильнее имхо.
__________________
9 из 10 голосов в моей голове сказали наркотикам "НЕТ" Мои ачивки: художник-паразит. |
|
|||||
|
Регистрация: Mar 2009
Адрес: this.x=0;this.y=0;this.z=0
Сообщений: 89
|
все зависит от ситуации, но по большому счету согласен.
|
![]() |
![]() |
Часовой пояс GMT +4, время: 23:27. |
|
|
« Предыдущая тема | Следующая тема » |
|
|