forked from: android4.2 animation
forked from android4.2 animation (diff: 11)
♥0 |
Line 131 |
Modified 2013-02-13 21:38:03 |
MIT License
archived:2017-03-20 00:55:52
| (replaced)
ActionScript3 source code
/**
* Copyright Nicolas ( http://wonderfl.net/user/Nicolas )
* MIT License ( http://www.opensource.org/licenses/mit-license.php )
* Downloaded from: http://wonderfl.net/c/vHsC
*/
// forked from about's android4.2 animation
package
{
import flash.display.Sprite;
import flash.events.Event;
import flash.events.MouseEvent;
import flash.geom.Matrix;
public class android_animation extends Sprite
{
private var canvas:Sprite = new Sprite();
private var ob:Vector.<android_icon> = new Vector.<android_icon>;
private var s:Number = 50;
private var a:Number = 1.0;
private var dx:Number;
private var dy:Number;
private var curcleX:Number;
private var curcleY:Number;
private var targetX:Number;
private var targetY:Number;
private var preX:Number=0;
private var preY:Number=0;
private var counter:int=0;
private var mouse_vx:Number;
private var mouse_vy:Number;
private var rest_num:Number = s;
public function android_animation()
{
addChild(canvas);
for(var i:int=0;i<s;i++){
ob.push(new android_icon());
}
var m:Matrix=new Matrix();
graphics.beginGradientFill("linear", [0x4682B4, 0x0], [1.0, 1.0], [0, 255], m);
graphics.drawRect(0,0,stage.stageWidth,stage.stageHeight);
graphics.endFill();
for(i=0;i<ob.length;i++){
ob[i].x = Math.random()*(stage.stageWidth);
ob[i].y = Math.random()*(stage.stageHeight);
// 初速
ob[i].vx = Math.random()*10-5;
ob[i].vy = Math.random()*10-5;
canvas.addChild(ob[i]);
}
canvas.addEventListener(Event.ENTER_FRAME,onEnterFrame);
canvas.addEventListener(MouseEvent.MOUSE_DOWN,mouseDown);
canvas.addEventListener(MouseEvent.MOUSE_UP,mouseUp);
}
private function onEnterFrame(e:Event):void{
for(var i:int = 0;i<ob.length;i++){
if(!ob[i].flg){
ob[i].x += ob[i].vx;
ob[i].y += ob[i].vy
}
if(ob[i].x > stage.stageWidth+50){
ob[i].x = stage.stageWidth+50;
ob[i].vx *= -0.1;
if(ob[i].stage_flg) ob[i].x = stage.stageWidth+200;
}
else if(ob[i].x < -50){
ob[i].x = -50;
ob[i].vx *= -0.1;
if(ob[i].stage_flg) ob[i].x=-200;
}
if(ob[i].y > stage.stageHeight+50){
ob[i].y = stage.stageHeight+50;
ob[i].vy *= -0.1;
if(ob[i].stage_flg) ob[i].stage.stageHeight+200;
}
else if(ob[i].y < -50){
ob[i].y = -50;
ob[i].vy *= -0.1;
if(ob[i].stage_flg) ob[i].y = -200;
}
}
mouse_vx += mouseX-preX;
mouse_vy += mouseY-preY;
preX = mouseX;
preY = mouseY;
counter++;
}
// private function onMouseMove(e:MouseEvent):void{
// mouse_vx += mouseX-preX;
// mouse_vy += mouseY-preY;
// preX = mouseX;
// preY = mouseY;
// counter++;
// }
private function mouseUp(e:MouseEvent):void{
e.target.stopDrag();
targetX = mouseX - curcleX;
targetY = mouseY - curcleY;
e.target.vx = mouse_vx/counter*2;
e.target.vy = mouse_vy/counter*2;
e.target.stage_flg=true;
e.target.flg = false;
}
private function mouseDown(e:MouseEvent):void{
e.target.startDrag();
curcleX = e.target.x;
curcleY = e.target.y;
counter = 0;
preX = mouseX;
preY = mouseY;
mouse_vx = 0;
mouse_vy = 0;
e.target.flg = true;
}
}
}
import flash.geom.Point;
import flash.display.BitmapData;
import flash.system.LoaderContext;
import flash.text.TextField;
import flash.display.Bitmap;
import flash.display.Loader;
import flash.display.Sprite;
import flash.events.Event;
import flash.net.URLRequest;
class android_icon extends Sprite{
public var flg:Boolean = false; //マウスでもってるか持ってないかのflag
public var stage_flg:Boolean = false;
public var vx:Number, vy:Number;
public var icon:Sprite = new Sprite();
private var url:String = "http://assets.wonderfl.net/images/related_images/e/e6/e6cc/e6cc3ba4f536d2a37059a763d23a4330ade3109am";
public function android_icon():void{
var loader:Loader=new Loader();
loader.contentLoaderInfo.addEventListener(Event.COMPLETE,loadComplete);
loader.load(new URLRequest(url), new LoaderContext(true));
}
private function loadComplete(e:Event):void{
var lo:Loader = Loader(e.target.loader);
//BitmapDataオブジェクトを作ります。第3引数(透明度をサポートするか)をtrueにしておきます。
var bd:BitmapData = new BitmapData(200, 200, true);
//BitmapDataにLoaderで読み込んだ画像を描き込みます。
bd.draw(lo.content);
//RGBのG(緑)成分が小さいピクセル(今回は0x10より小さいピクセル)を、透明(0x00000000)に置き換えます。
bd.threshold(bd, bd.rect, new Point(), "<", 0x001000, 0x00000000, 0x00FF00);
//以上の処理が完了したBitmapDataを表示するためのBitmapを作ります。
var bitmap:Bitmap = new Bitmap(bd);
bitmap.height = 60;
bitmap.width = 60;
addChild(bitmap);
}
}
