Показать сообщение отдельно
Старый 20.03.2011, 13:11
ChuwY вне форума Посмотреть профиль Отправить личное сообщение для ChuwY Посетить домашнюю страницу ChuwY Найти все сообщения от ChuwY
  № 13  
Ответить с цитированием
ChuwY
 
Аватар для ChuwY

Регистрация: Nov 2009
Адрес: Тула / Москва
Сообщений: 734
Отправить сообщение для ChuwY с помощью ICQ Отправить сообщение для ChuwY с помощью Skype™
Не смог открыть твой пример.
Написал свой.

Код AS3:
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;
	}
}
Вложения
Тип файла: rar test.rar (460.9 Кб, 34 просмотров)
__________________
9 из 10 голосов в моей голове сказали наркотикам "НЕТ"
Мои ачивки: художник-паразит.