Показать сообщение отдельно
Старый 22.02.2011, 09:36
forgottensmile вне форума Посмотреть профиль Отправить личное сообщение для forgottensmile Найти все сообщения от forgottensmile
  № 4  
Ответить с цитированием
forgottensmile

Регистрация: Feb 2011
Сообщений: 22
ничего сверхъестественного

Код AS3:
import flash.display.Sprite;
import flash.events.Event;
import flash.geom.Point;	
import flash.display.MovieClip;
 
import com.greensock.*;
import com.greensock.easing.*;
import hype.extended.layout.ShapeLayout;
import hype.extended.behavior.VariableVibration;
import hype.framework.core.ObjectPool;
 
public class CreepCrowd extends Sprite 
	{		
		private var creeps:Array = [];
		private var targetPointX:Number;
		private var targetPointY:Number;
		private var respawnZone:MovieClip;		
		private var respawnZoneLayout:ShapeLayout;
 
		public function CreepCrowd(respawnZone:MovieClip, targetPointX:Number, targetPointY:Number, num:Number=100) 
		{
			this.respawnZone = respawnZone;
			this.targetPointX = targetPointX;
			this.targetPointY = targetPointY;
 
			respawnZoneLayout = new ShapeLayout(respawnZone);
			createNamedCreeps(num);			
 
			addEventListener(Event.ENTER_FRAME, moveCreep);
		}
 
		public function moveCreep(e:Event):void 
		{
			for each (var itemNamed:CreepNamed in creeps)
			{				
				var item:Creep = itemNamed.getCreep();
				var point:Point = item.globalToLocal(new Point(targetPointX, targetPointY));
 
				if (point.y > 2) {
					item.rotation += item.getRotationSpeed();
				} else if (point.y < -2){
					item.rotation -= item.getRotationSpeed();
				}
 
				itemNamed.x += Math.cos(item.rotation * (Math.PI / 180)) * item.getSpeed();
				itemNamed.y += Math.sin(item.rotation * (Math.PI / 180)) * item.getSpeed();
			}
		}
 
		private function createNamedCreeps(num:Number):void {
			for (var i:int = 0; i < num; i++)
			{				
				var creepNamed:CreepNamed = new CreepNamed();
 
				var creep:Creep = creepNamed.getCreep();
				creep.rotation = Math.random() * 360;
				creep.setSpeed(Math.random() * 0.5 + 0.2);
				creep.setRotationSpeed(Math.random() * 3 + 2);
 
				respawnZoneLayout.applyLayout(creepNamed);
 
				addChild(creepNamed);
				creeps.push(creepNamed);
			}			
		}
 
		public function getCreepArray():Array {
			return creeps;
		}		
 
		public function killCreep(creep:CreepNamed):void {
			removeChild(creep);
			creeps.splice(creeps.indexOf(creep), 1);
		}
	}
CreepNamed представляет собой символ Creep с привязанным к нему текстовым полем

Код AS3:
import flash.display.Sprite;
import flash.text.*;
import flash.ui.Keyboard;
 
	public class CreepNamed extends Sprite {
		private var creep:Creep;
		private var txt:String;
 
		public function CreepNamed(coord_x:int = 0, coord_y:int = 0) {
			x = coord_x;
			y = coord_y;
			creep = new Creep();
			creep.x = coord_x;
			creep.y = coord_y;
 
			txt = new String();
			for (var i=0; i<5; i++) {
				txt = txt.concat(String.fromCharCode(Math.random() * 10 + 80)).toLowerCase();
			}
 
			var txtField:TextField = new TextField();
			txtField.text = txt;
			txtField.textColor = 0xFFFFFF;
			txtField.width = 50;
			txtField.height = 20;			
			txtField.mouseEnabled = false;
			txtField.type = TextFieldType.DYNAMIC;
			txtField.x = creep.x - 20;
			txtField.y = creep.y - 25;
 
			addChild(creep);
			addChild(txtField);
		}
 
		public function getCreep():Creep {
			return creep;
		}
 
		public function getText():String {
			return txt;
		}
	}
Ну и сам Creep

Код AS3:
import flash.display.MovieClip;
import flash.text.*;
import flash.ui.Keyboard;
 
	public class Creep extends MovieClip {
		private var speed:Number;
		private var rotationSpeed:uint;
 
		public function Creep() {
			graphics.beginFill(0x000000);
			graphics.drawRect( -5, 0, 10, 2);
			graphics.endFill();
		}
 
		public function setSpeed(speed:Number):void {
			this.speed = speed;
		}
 
		public function getSpeed():Number {
			return speed;
		}
 
		public function setRotationSpeed(rotationSpeed:uint):void {
			this.rotationSpeed = rotationSpeed;
		}
 
		public function getRotationSpeed():uint {
			return rotationSpeed;
		}
	}