|
Участник форума
Регистрация: 11.07.2007
Сообщений: 292
Провел на форуме: 2131521
Репутация:
512
|
|
ЗАДАНИЕ ROA
ЗАДАНИЕ ROA
ЗАДАНИЕ: Flash(AS 3) Tower-Defence: просто массив объектов Points(x, y), по которым движется тело. Анимация этого тела.
New flash AS3 file,в Properties пищем Class: Antichatflash
и создадим новый .as файл с этим кодом:
PHP код:
package
{
import flash.display.*;
import flash.events.Event;
public class antichatflash extends MovieClip
{
private var i:int, j:int, t:Number, cir:Sprite, cirSh:Shape,
_x:int, _y:int, _x1:int, _y1:int, _x2:int, _y2:int;
private const ANGLE_COR:Number = 180 / Math.PI;
public function antichatflash()
{
_x = 0;
_y = 0;
_x1 = 100;
_y1 = 200;
_x2 = 0;
_y2 = 400;
graphics.lineStyle(0);
graphics.moveTo(_x,_y);
graphics.curveTo(_x1, _y1, _x2, _y2);
cir = new Sprite();
addChild(cir);
cirSh = new Shape();
cirSh.graphics.lineStyle(0);
cirSh.graphics.drawRect(0,10,20,100);
cir.addChild(cirSh);
cirSh.x=-50;
cirSh.y = -5;
addEventListener(Event.ENTER_FRAME, enterFrameFunc);
}
private function enterFrameFunc(evt:Event):void {
i++;
t = i/100;
cir.x = bezier3(_x,_x1,_x2,t);
cir.y = bezier3(_y,_y1,_y2,t);
if (i>1) {
cir.rotation = returnRotation(
bezier3(_x,_x1,_x2,t)-bezier3(_x,_x1,_x2,(i-1)/100),
bezier3(_y,_y1,_y2,t)-bezier3(_y,_y1,_y2,(i-1)/100));
}
if (i>100) {
i=0;
}
}
private function returnRotation(myX:int,myY:int):Number {
var aC:Number=myY;
var cB:Number=myX;
var aB:Number;
aB=Math.sqrt(aC*aC+cB*cB);
var aBC:Number=Math.asin(aC/aB);
var rez:int;
rez = aBC*180/Math.PI;
if (aC<0) rez = 360+aBC*ANGLE_COR;
if (cB < 0) {
rez = 180-aBC*ANGLE_COR;
if (aC < 0) rez = 180 - aBC * ANGLE_COR;
}
return rez;
}
private function bezier3(p0:int,p1:int,p2:int,t:Number):Number {
return (1-t)*(1-t)*p0+2*t*(1-t)*p1+t*t*p2;
}
}
}
вот потом CTRL+ENTER.
Смотрим тут:http://redu.uz/antichatflash.html
Исходник:redu.uz/antichat.rar
Последний раз редактировалось N19hTW0lF; 21.12.2008 в 22:06..
|