Illustratorで立方体を作る時の動きをASで

by yuugurenote
♥0 | Line 122 | Modified 2011-05-28 16:16:24 | MIT License
play

ActionScript3 source code

/**
 * Copyright yuugurenote ( http://wonderfl.net/user/yuugurenote )
 * MIT License ( http://www.opensource.org/licenses/mit-license.php )
 * Downloaded from: http://wonderfl.net/c/7m7L
 */

package {
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.events.MouseEvent;
    
     [SWF(width=465,height=465,backgroundColor=0xFFFFFF,frameRate=60)]
    public class FlashTest extends Sprite {
        var nx:Number=10;//この数値が六角形の基準値  あとは無理矢理計算です。
        var ny:Number=nx*1.6875;
        var num:Number=nx*3.714286;
        
        //Illusratorで立方体を作成するときに
        //六角形を3つ作り角度を回転してから
        //周りに並べてパスファインダの分割で
        //立方体にします。そのときの動きを
        //ASで表現してみました。計算方法とか
        //Spriteの書き方とか無茶苦茶かと思います(´・ω・`)
        
        public function FlashTest() {
            // write as3 code here..
     stage.addEventListener(MouseEvent.MOUSE_DOWN,xDown);
    function xDown(e:MouseEvent):void {

    //六角形を回転させるためのbase
    var base:Sprite = new Sprite();
    base.graphics.lineStyle(1,0x000000,0);
    base.graphics.drawRect(-num/2,-num/2,num,num);
    base.x=mouseX;//0;
    base.y=mouseY;//0;
    base.rotation=-90;
    addChild(base);

    //六角形Sprite1
    var mySprite:Sprite = new Sprite();
    mySprite.graphics.lineStyle(1,0x000000,1);
    mySprite.graphics.moveTo(nx,0);
    mySprite.graphics.lineTo(nx * 2.875,0);
    mySprite.graphics.lineTo(nx * 3.875,ny);
    mySprite.graphics.lineTo(nx * 2.875,ny * 2);
    mySprite.graphics.lineTo(nx,ny * 2);
    mySprite.graphics.lineTo(0,ny);
    mySprite.graphics.lineTo(nx,0);
    mySprite.alpha=1;
    mySprite.x=- num/2;
    mySprite.y=- num/2;
    base.addChild(mySprite);

    //六角形Sprite2
    var mySprite2:Sprite = new Sprite();
    mySprite2.graphics.lineStyle(1,0x000000,1);
    mySprite2.graphics.moveTo(nx,0);
    mySprite2.graphics.lineTo(nx * 2.875,0);
    mySprite2.graphics.lineTo(nx * 3.875,ny);
    mySprite2.graphics.lineTo(nx * 2.875,ny * 2);
    mySprite2.graphics.lineTo(nx,ny * 2);
    mySprite2.graphics.lineTo(0,ny);
    mySprite2.graphics.lineTo(nx,0);
    mySprite2.alpha=0;
    mySprite2.x=mySprite.x*2;
    mySprite2.y=mySprite.y;
    base.addChild(mySprite2);

    //六角形Sprite3
    var mySprite3:Sprite = new Sprite();
    mySprite3.graphics.lineStyle(1,0x000000,1);
    mySprite3.graphics.moveTo(nx,0);
    mySprite3.graphics.lineTo(nx * 2.875,0);
    mySprite3.graphics.lineTo(nx * 3.875,ny);
    mySprite3.graphics.lineTo(nx * 2.875,ny * 2);
    mySprite3.graphics.lineTo(nx,ny * 2);
    mySprite3.graphics.lineTo(0,ny);
    mySprite3.graphics.lineTo(nx,0);
    mySprite3.alpha=0;
    mySprite3.x= mySprite.x/2 + (mySprite.x*-0.08266)/2;
    mySprite3.y= -(mySprite.x*-0.08266);//15.35;
    base.addChild(mySprite3);

    //立方体の線0
    var mySprite0:Sprite = new Sprite();
    mySprite0.graphics.lineStyle(1,0x000000,1);
    mySprite0.graphics.moveTo(nx,0);
    mySprite0.graphics.lineTo(nx * 2.875,0);
    mySprite0.graphics.lineTo(nx * 3.875,ny);
    mySprite0.graphics.lineTo(nx * 2.875,ny * 2);
    mySprite0.graphics.lineTo(nx,ny * 2);
    mySprite0.graphics.lineTo(0,ny);
    mySprite0.graphics.lineTo(nx,0);
    mySprite0.alpha=0;
    mySprite0.x=- num/2;
    mySprite0.y=- num/2;
    base.addChild(mySprite0);

    //立方体の線1
    var mySprite4:Sprite = new Sprite();
    mySprite4.graphics.lineStyle(1,0x000000,1);
    mySprite4.graphics.moveTo(mySprite.width/2 +  (mySprite.x*-0.08266)/2,mySprite.height/2);
    mySprite4.graphics.lineTo(nx * 3.875,ny);
    mySprite4.alpha=0;
    mySprite0.addChild(mySprite4);

    //立方体の線2
    var mySprite5:Sprite = new Sprite();
    mySprite5.graphics.lineStyle(1,0x000000,1);
    mySprite5.graphics.moveTo(mySprite.width/2 +  (mySprite.x*-0.08266)/2,mySprite.height/2);
    mySprite5.graphics.lineTo(nx,ny * 2);
    mySprite5.alpha=0;
    mySprite0.addChild(mySprite5);

    //立方体の線3
    var mySprite6:Sprite = new Sprite();
    mySprite6.graphics.lineStyle(1,0x000000,1);
    mySprite6.graphics.moveTo(mySprite.width/2 +  (mySprite.x*-0.08266)/2,mySprite.height/2);
    mySprite6.graphics.lineTo(nx,0);
    mySprite6.alpha=0;
    mySprite0.addChild(mySprite6);

    //六角形の動き
    base.addEventListener(Event.ENTER_FRAME,xMove);
    function xMove(e:Event):void {
        base.rotation+=3;
        if (base.rotation>=90) {
            base.rotation=90;
            mySprite2.addEventListener(Event.ENTER_FRAME,mySpAlpha);
            mySprite3.addEventListener(Event.ENTER_FRAME,mySpAlpha);
            mySprite0.addEventListener(Event.ENTER_FRAME,mySpAlpha);
            mySprite4.addEventListener(Event.ENTER_FRAME,mySpAlpha);
            mySprite5.addEventListener(Event.ENTER_FRAME,mySpAlpha);
            mySprite6.addEventListener(Event.ENTER_FRAME,mySpAlpha);
            base.removeEventListener(Event.ENTER_FRAME,xMove);
        }
    }
    function mySpAlpha(e:Event):void {
        var mySp:Sprite=e.target as Sprite;
        mySp.alpha+=0.01;
        if (mySp.alpha>1) {
            base.removeChild(mySprite);
            base.removeChild(mySprite2);
            base.removeChild(mySprite3);
            mySprite2.removeEventListener(Event.ENTER_FRAME,mySpAlpha);
            mySprite3.removeEventListener(Event.ENTER_FRAME,mySpAlpha);
            mySprite0.removeEventListener(Event.ENTER_FRAME,mySpAlpha);
            mySprite4.removeEventListener(Event.ENTER_FRAME,mySpAlpha);
            mySprite5.removeEventListener(Event.ENTER_FRAME,mySpAlpha);
            mySprite6.removeEventListener(Event.ENTER_FRAME,mySpAlpha);
        }
    }
}    
        }
    }
}