sbcr_1_5

by ushisantoasobu
♥0 | Line 130 | Modified 2010-11-06 13:05:42 | MIT License
play

ActionScript3 source code

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

package {
    import flash.text.TextField;
    import flash.net.URLRequest;
    import flash.display.Sprite;
    import flash.display.MovieClip;
    import flash.display.Loader;
    
    import flash.events.TimerEvent;
    import flash.events.MouseEvent;
    
    import flash.utils.Timer;
    import flash.geom.Point;
    import flash.net.URLLoader;
    
    [SWF(backgroundColor=0x000000)]
    
    public class FlashTest extends Sprite {
        
        public var panel:Array;
        public var panelLoc:Array;
        public var panelScale:Array;
        public var panelAngle:Array;
        
        public var base:Sprite;
        public var rolloveredPanel:int = -1;
        public var timer:Timer;
        public const kazu:Number = 60;
        public const shokiAlpha:Number = 0.3;//.8;
        
        public function FlashTest(){
            
            base = new Sprite();
            base.x = stage.stageWidth / 2;
            base.y = stage.stageHeight / 2;
            this.addChild(base);
            
            panel = new Array();
            panelLoc = new Array();
            panelScale = new Array();
            panelAngle = new Array();
            
            var hankei:Number = 1.8;
            var kakudo:Number = 0;
            const bai:Number = 0.02;
            
            for(var i:Number = 0;i < kazu + 1; i++){
                var bbb:PanelSymbol = new PanelSymbol();
                panel.push(bbb);
                var theX:Number = hankei*Math.PI*2*Math.cos(kakudo/180*Math.PI);
                var theY:Number = hankei*Math.PI*2*Math.sin(kakudo/180*Math.PI);
                
                panelLoc.push(new Point(theX, theY));
                
                panelAngle.push(kakudo);
                panelScale.push(bai*hankei);
                
                var num:Number = panel.length - 1;
   
                panel[num].name = String(num);
                panel[num].rotation = panelAngle[num];
                panel[num].x = panelLoc[num].x;
                panel[num].y = panelLoc[num].y;
                panel[num].scaleX = panel[num].scaleY = panelScale[num];
                panel[num].alpha = shokiAlpha;
                panel[num].mouseChildren = false;
                
                var imgLoader:Loader = new Loader();
                panel[num].plate.addChild(imgLoader);
                imgLoader.x = 10;imgLoader.y = 10;
                var filename:String = "http://moguramogura.site90.com/sbcr/case05/"+num+".png";
                var urlReq:URLRequest = new URLRequest(filename);
                imgLoader.load(urlReq);
                
                /*
                var textfield:TextField = new TextField();
                panel[num].plate.addChild(textfield);
                textfield.x = 10; textfield.y = 40;
                textfield.text = String(num);
                */
                
                base.addChild(panel[num]);
                
                panel[num].addEventListener(MouseEvent.ROLL_OVER, onROver);
                panel[num].addEventListener(MouseEvent.ROLL_OUT, onROut);
                panel[num].addEventListener(MouseEvent.MOUSE_MOVE, onMMove);
                panel[num].addEventListener(MouseEvent.MOUSE_DOWN, onMDown);
                panel[num].addEventListener(MouseEvent.MOUSE_UP, onMUp);
                
                hankei *= 1.045;
                kakudo += 12;
                if(kakudo > 180) kakudo -= 360;
                            
            }
            
            timer = new Timer(33);
            timer.addEventListener(TimerEvent.TIMER, loop);
            timer.start();
            
            /*
            var aaa:PanelSymbol = new PanelSymbol();
            this.addChild(aaa);
            var ccc:TextField = new TextField();
            ccc.text = "aaaaaaa";
            aaa.plate.addChild(ccc);
            aaa.rotation = 0;aaa.x = 40;
            */
        }
        
        public function onROver(e:MouseEvent):void{
            /*
            e.target.plate.x = -e.target.plate.mouseX;
            e.target.plate.y = -e.target.plate.mouseY;
            e.target.x = base.mouseX;
            e.target.y = base.mouseY;
            base.setChildIndex(PanelSymbol(e.target), base.numChildren-1);         
            */
            rolloveredPanel = int(e.target.name);
        }
        public function onMMove(e:MouseEvent):void{
            e.target.plate.x = -e.target.plate.mouseX;
            e.target.plate.y = -e.target.plate.mouseY;
            e.target.x = base.mouseX;
            e.target.y = base.mouseY;
        }
        public function onROut(e:MouseEvent):void{
            var tempX:Number = e.target.plate.x*e.target.scaleX*Math.cos(e.target.rotation/180*Math.PI)-e.target.plate.y*e.target.scaleY*Math.sin(e.target.rotation/180*Math.PI);
            var tempY:Number = e.target.plate.x*e.target.scaleX*Math.sin(e.target.rotation/180*Math.PI)-e.target.plate.y*e.target.scaleY*Math.cos(e.target.rotation/180*Math.PI);
            e.target.x += tempX;
            e.target.y += tempY;
            e.target.plate.x = 0;
            e.target.plate.y = 0;
            base.setChildIndex(PanelSymbol(e.target), int(PanelSymbol(e.target).name));
            rolloveredPanel = -1;
        }
        public function onMDown(e:MouseEvent):void{
            
        }
        public function onMUp(e:MouseEvent):void{
            
        }
        public function loop(e:TimerEvent):void{                
            for(var i:Number = 0; i < panel.length; i++){
                if(rolloveredPanel == int(panel[i].name)){
                    panel[i].alpha += (1-panel[i].alpha)/8;
                    panel[i].scaleX += (1-panel[i].scasleX)/8;
                    panel[i].scaleY += (1-panel[i].scaleY)/8;
                    panel[i].rotation += (0-panel[i].rotation)/8;
                }else{
                    panel[i].x += (panelLoc[i].x-panel[i].x)/8;
                    panel[i].y += (panelLoc[i].y-panel[i].y)/8;
                    panel[i].alpha += (shokiAlpha-panel[i].alpha)/8;
                    panel[i].scaleX += (panelScale[i]-panel[i].scaleX)/8;
                    panel[i].scaleY += (panelScale[i]-panel[i].scaleY)/8;
                    panel[i].rotation += (panelAngle[i]-panel[i].rotation)/8;
                }
            }
            
        }

    }
}


import flash.text.TextField;
import flash.display.Sprite;
import flash.display.MovieClip;

class PanelSymbol extends Sprite{
    
    public var filename:TextField;
    public var imgArea:Sprite;
    public var plate:Sprite;
    
    public function PanelSymbol(){
        
        this.graphics.beginFill(0x00FF00, 0.0);
        this.graphics.drawRect(0, 0, 100, 100);
        this.graphics.endFill();
        
        plate = new Sprite();
        plate.graphics.beginFill(0xFFFFFF, 1.0);
        plate.graphics.drawRect(0, 0, 100, 100);
        plate.graphics.endFill();

        this.addChild(plate);   
    }


}