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

Регистрация: Sep 2010
Адрес: Красноярск
Сообщений: 217
Отправить сообщение для Lyso с помощью Skype™
А как кинуть на форум? Вот код двух файлов:
1 (balls.fla)
Код AS3:
import flash.display.Sprite; 
import flash.text.*; 
 
stage.addEventListener(MouseEvent.CLICK,addBall);
 
function addBall(e:MouseEvent):void{
	var ball:Ball=new Ball();
	addChild(ball);
	ball.x=mouseX;
	ball.y=mouseY;
    myText.text= Ball.allBalls.length.toString(); //Вывод длины массива в текст.
}
2 (Ball.as)
Код AS3:
package 
{
	import flash.display.MovieClip;
	import flash.events.Event;
	import flash.text.*;
	import flash.events.MouseEvent;
	import flash.geom.ColorTransform;
	import flash.events.MouseEvent;
	import flash.ui.Keyboard;
	import flash.events.KeyboardEvent;
 
	public class Ball extends MovieClip
	{
		public static var allBalls:Array = [];
		var xspeed:Number = -10 + Math.random() * 20;
		var yspeed:Number = -5;
		var grav:Number = 1;
		var radius:Number;
		public var up:Boolean = false;
		public var down:Boolean = false;
		public var left:Boolean = false;
		public var right:Boolean = false;
 
		public function Ball()
		{
			var colorTransform:ColorTransform = new ColorTransform();
			colorTransform.alphaMultiplier = 1;
			colorTransform.redOffset = Math.random() * 4 + 7;
			colorTransform.greenMultiplier = Math.random() * 3;
			transform.colorTransform = colorTransform;
			scaleX = scaleY = Math.random() * 0.5 + 0.5;
			radius = width / 2;
			allBalls.push(this);
			addEventListener(Event.ENTER_FRAME,onFrame);//Слушатель событый, в каждый кадр.
		}
 
		}
		public function onFrame(e:Event):void
		{
			yspeed +=  grav;
			xspeed * +0.9;
			y +=  yspeed;
			x +=  xspeed;
			rotation = x * 2;
 
			hitBall();
			hitStage();
		}
 
		public function hitBall():void
		{
			for (var i=0; i<allBalls.length; i++)
			{
				var curBall = allBalls[i];
				var minDist = curBall.radius + radius;
				var dist = distance(curBall);
				if (curBall != this && dist < minDist)
				{
					var collisionDist=(dist-minDist)/2;
					var dx=(curBall.x-x)/dist*collisionDist;
					var dy=(curBall.y-y)/dist*collisionDist;
 
					x +=  dx;
					xspeed +=  dx;
					y +=  dy;
					yspeed +=  dy;
 
					curBall.x -=  dx;
					curBall.xspeed -=  dx;
					curBall.y -=  dy;
					curBall.yspeed -=  dy;
				}
			}
		}
 
		public function distance(obj:Ball):Number
		{
			var dx = obj.x - x;
			var dy = obj.y - y;
			return Math.sqrt(dx*dx+dy*dy);
		}
 
		public function hitStage():void
		{
			if (x > 300 - radius)
			{
				x = 300 - radius;
				xspeed = 0;
			}
			if (x < radius)
			{
				x = radius;
				xspeed = 0;
			}
			if (y > 300 - radius)
			{
				y = 300 - radius;
				yspeed =  -  yspeed * 0.2;
				xspeed = 0;
			}
		}
	}
}
Как сделать чтобы весь массив при нажатии на стрелки поднимался или двигался по сторонам? То есть координаты .y и .x...