卫生纸效果,哈哈
package
{
import flash.display.Sprite;
import flash.display.StageAlign;
import flash.display.StageScaleMode;
import flash.events.Event;
import flash.geom.Point;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
public class BallV1 extends Sprite
{
private var textArr:Array=[];
private var textLen:int=10;
//private var str:String="2012年12月12日,世界屌丝日,屌丝们,赶紧了";
private var str:String="日本近期在钓鱼岛问题上小动作频频,实际上是测试中国在钓鱼岛上的态度和策略,";
private var spring:Number=.2;
private var rand:Number=150;
private var sp:Number=0;
private var f:Number=0;
public function BallV1()
{
super();
stage.scaleMode=StageScaleMode.NO_SCALE;
stage.align=StageAlign.TOP_LEFT;
init();
}
private function init():void
{
sp=(360 / str.length) * (Math.PI / 180);
trace(sp, (360 / str.length), str.length, "===========");
for (var i:int=0; i < str.length; i++)
{
var text:WordSpr=new WordSpr;
text.text=str.charAt(i);
textArr.push(text);
this.addChild(text);
}
this.addEventListener(Event.ENTER_FRAME, onEnterFrame);
}
private function onEnterFrame(e:Event):void
{
// var ball:WordSpr=textArr[0];
//
//
// var ax:Number=(mouseX - ball.x) * spring;
// var ay:Number=(mouseY - ball.y) * spring;
//
// ball.vx=ax;
// ball.vy=ay;
//
// ball.x+=ball.vx;
// ball.y+=ball.vy;
var ax:Number=0;
var ay:Number=0;
var angle:Number=0;
var ball2:WordSpr;
for (var i:int=0; i < str.length; i++)
{
var ball1:WordSpr=textArr[i];
if (Point.distance(new Point(ball1.x, ball1.y), new Point(mouseX, mouseY)) > rand)
{
if (i == 0)
{
ball1.vx=(mouseX - ball1.x) * spring;
ball1.vy=(mouseY - ball1.y) * spring;
}
else
{
ball2=textArr[i - 1];
//
// angle=Math.atan2(ball2.y - mouseY, ball2.x - mouseX);
// angle+=sp;
//
// ay=mouseY + Math.sin(angle) * rand;
// ax=mouseX + Math.cos(angle) * rand;
//
// ball1.vy+=(ay - ball1.y) * spring;
// ball1.vx+=(ax - ball1.x) * spring;
ball1.vx=(ball2.x - ball1.x) * spring;
ball1.vy=(ball2.y - ball1.y) * spring;
ball1.vy*=.99;
ball1.vx*=.99;
}
ball1.x+=ball1.vx;
ball1.y+=ball1.vy;
}
else
{
var r:Number=rand - (str.length - i) * (str.length / ball1.height);
if (i == 0)
{
if (Point.distance(new Point(ball1.x, ball1.y), new Point(mouseX, mouseY)) > r)
{
ball1.vx=(mouseX - ball1.x) * spring;
ball1.vy=(mouseY - ball1.y) * spring;
//ball1.vx*=.03;
//ball1.vy*=.03;
ball1.x+=ball1.vx;
ball1.y+=ball1.vy;
}
var n:Number=.06;
var dx:Number=(ball1.x - mouseX);
var dy:Number=(ball1.y - mouseY);
ball1.vx=Math.cos(n) * dx + Math.sin(n) * dy;
ball1.vy=Math.cos(n) * dy - Math.sin(n) * dx;
ball1.x=mouseX + ball1.vx;
ball1.y=mouseY + ball1.vy;
}
else
{
ball2=textArr[i - 1];
// if (Point.distance(new Point(ball1.x, ball1.y), new Point(mouseX, mouseY)) > r)
// {
// ball1.vx=(mouseX - ball1.x) * spring;
// ball1.vy=(mouseY - ball1.y) * spring;
//
// ball1.vx*=.03;
// ball1.vy*=.03;
//
// ball1.x+=ball1.vx;
// ball1.y+=ball1.vy;
// }
angle=Math.atan2(ball2.y - mouseY, ball2.x - mouseX);
angle+=sp/(str.length*i);
ay=mouseY+Math.sin(angle) * r;
ax=mouseX+Math.cos(angle) * r;
ball1.vy=(ay - ball1.y) * spring;
ball1.vx=(ax - ball1.x) * spring;
//ball1.vx=(ball2.x - ball1.x) * spring;
//ball1.vy=(ball2.y - ball1.y) * spring;
//ball1.vy*=1.6;
//ball1.vx*=1.6;
ball1.x+=ball1.vx;
ball1.y+=ball1.vy;
}
}
}
}
}
}
卫生纸效果......................
package
{
import flash.display.Sprite;
import flash.text.TextField;
import flash.text.TextFieldAutoSize;
public class WordSpr extends Sprite
{
public var vx:Number=0;
public var vy:Number=0;
private var ttf:TextField;
public function WordSpr()
{
ttf=new TextField;
//ttf.border=true;
this.addChild(ttf);
ttf.autoSize=TextFieldAutoSize.CENTER;
}
public function set text(_s:String):void
{
ttf.text=_s;
}
}
}
浙公网安备 33010602011771号