sbcr_1_5
♥0 |
Line 130 |
Modified 2010-11-06 13:05:42 |
MIT License
archived:2017-03-20 01:19:13
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);
}
}