// forked from yoneken's はちゅね // 元ネタ=> http://blog.livedoor.jp/k_yon/archives/51745838.html // 複数画像の動的ロードって、うまいやり方ないもんですかねー? // // サムネイルがエラー表示になってる・・ これってタイミング狙ってキャプチャできないかなぁ? // // はちゅねは幾つかのパーツに分かれており、パーツ.rotate(回転量)として、 // 間接を中心に,指定した部分(と連なる部分)を動かすことができます。 // // 身体全体 => body // 頭 => head0とhead1 注.同時に操作してください!! // 右手 => arm_r // ネギ => negi // 右ツインテ => hair_r // 左ツインテ => hair_l package { [SWF(width="350", height="300", backgroundColor="#ffffff", frameRate="30")] import flash.display.Sprite; import flash.events.Event; public class HatyuneStage extends Sprite { public var miku:Hatyune; private static const NECK:Number = 0.094; private var neckr:Number; public function HatyuneStage() { miku = new Hatyune(); addChild(miku); neckr = 0.0; addEventListener(Event.ENTER_FRAME, loop); Wonderfl.capture_delay( 60 ); } private function loop(e:Event):void{ // この部分に、はちゅねのポーズを記述しましょう // 例. 右手を動かす // miku.arm_r.rotate(0.5); miku.hair_l.rotate(Math.sin(neckr)/5); miku.hair_r.rotate(-Math.sin(neckr)/5); if(neckr < Math.PI) neckr += NECK; else neckr = -Math.PI; // ここまで } } } // ------はちゅねを動かすだけなら、こっから下は読まなくてOK!------- import flash.display.Loader; import flash.display.Sprite; import flash.display.Bitmap; import flash.display.BitmapData; import flash.net.URLRequest; class Hatyune extends Sprite { public var arm_r:Parts; public var head0:Parts; public var head1:Parts; public var body:Parts; public var hair_l:Parts; public var hair_r:Parts; public var negi:Parts; private var lcount:int; private var lbody:Loader; private var lhair_l:Loader; private var lhair_r:Loader; private var lhand_r:Loader; private var lface:Loader; private var lnegi:Loader; public function Hatyune() { lcount=0; lbody= new Loader(); lbody.contentLoaderInfo.addEventListener("complete", loadImg); lbody.load(new URLRequest("http://lads.myspacecdn.com/videos/c.swf?on=0&t=1&racp=0&el=&mt=audio&radd=0&ap=1&bacp=0&facp=0&rast=5&c4=transparent&rapf=True&pertid=4de5b2f35232d0e90000000000000000&isus=true&skin=http%3a%2f%2flads.myspacecdn.com%2fvideos%2fartist.xml&artid=2998049&bast=-1&pguid=be9b8460aa36478a8980e404ed0c53b6&plid=34470&fast=5&cc=en-US&profid=134560903&fapf=True&zad=1&aytast=-1&aytatt=-1&skinid=16&badd=-1&pcc=en-US&fadd=0&aytadd=-1&xad=1&yad=1&c2=transparent&uid=106559696&logerr=0&hash=MIG%252fBgorBgEEAYI3WAOtoIGwMIGtBgorBgEEAYI3WAMBoIGeMIGbAgMCAAECAmYDAgIAwAQIiz0QZ2x75fAEEBnHlYFK8Z%252bhJnplByBMGkwEcD8YnYpA8cUBDhpaDxj3sAuxX7oNzp7cL%252fXFOte%252bVHwm2fdfHNPAh%252bVnYTEqf636C9YT7twEtxVCBt5xDFlnbhk%252bQ3s9EKYIS2MmkZU0EER7fRWAMizfJ0kxAQOCGGB8Sqsj%252bPEtN7fkPGUumRI1dlc%253d&ratt=0&c3=transparent&bapf=False&c1=transparent&novidslider=1&batt=-1&fatt=0&ptype=4")); lhair_l = new Loader(); lhair_l.contentLoaderInfo.addEventListener("complete", loadImg); lhair_l.load(new URLRequest("http://lads.myspacecdn.com/videos/c.swf?on=0&t=1&racp=0&el=&mt=audio&radd=0&ap=1&bacp=0&facp=0&rast=5&c4=transparent&rapf=True&pertid=4de5b2f35232d0e90000000000000000&isus=true&skin=http%3a%2f%2flads.myspacecdn.com%2fvideos%2fartist.xml&artid=2998049&bast=-1&pguid=be9b8460aa36478a8980e404ed0c53b6&plid=34470&fast=5&cc=en-US&profid=134560903&fapf=True&zad=1&aytast=-1&aytatt=-1&skinid=16&badd=-1&pcc=en-US&fadd=0&aytadd=-1&xad=1&yad=1&c2=transparent&uid=106559696&logerr=0&hash=MIG%252fBgorBgEEAYI3WAOtoIGwMIGtBgorBgEEAYI3WAMBoIGeMIGbAgMCAAECAmYDAgIAwAQIiz0QZ2x75fAEEBnHlYFK8Z%252bhJnplByBMGkwEcD8YnYpA8cUBDhpaDxj3sAuxX7oNzp7cL%252fXFOte%252bVHwm2fdfHNPAh%252bVnYTEqf636C9YT7twEtxVCBt5xDFlnbhk%252bQ3s9EKYIS2MmkZU0EER7fRWAMizfJ0kxAQOCGGB8Sqsj%252bPEtN7fkPGUumRI1dlc%253d&ratt=0&c3=transparent&bapf=False&c1=transparent&novidslider=1&batt=-1&fatt=0&ptype=4")); lhair_r = new Loader(); lhair_r.contentLoaderInfo.addEventListener("complete", loadImg); lhair_r.load(new URLRequest("http://lads.myspacecdn.com/videos/c.swf?on=0&t=1&racp=0&el=&mt=audio&radd=0&ap=1&bacp=0&facp=0&rast=5&c4=transparent&rapf=True&pertid=4de5b2f35232d0e90000000000000000&isus=true&skin=http%3a%2f%2flads.myspacecdn.com%2fvideos%2fartist.xml&artid=2998049&bast=-1&pguid=be9b8460aa36478a8980e404ed0c53b6&plid=34470&fast=5&cc=en-US&profid=134560903&fapf=True&zad=1&aytast=-1&aytatt=-1&skinid=16&badd=-1&pcc=en-US&fadd=0&aytadd=-1&xad=1&yad=1&c2=transparent&uid=106559696&logerr=0&hash=MIG%252fBgorBgEEAYI3WAOtoIGwMIGtBgorBgEEAYI3WAMBoIGeMIGbAgMCAAECAmYDAgIAwAQIiz0QZ2x75fAEEBnHlYFK8Z%252bhJnplByBMGkwEcD8YnYpA8cUBDhpaDxj3sAuxX7oNzp7cL%252fXFOte%252bVHwm2fdfHNPAh%252bVnYTEqf636C9YT7twEtxVCBt5xDFlnbhk%252bQ3s9EKYIS2MmkZU0EER7fRWAMizfJ0kxAQOCGGB8Sqsj%252bPEtN7fkPGUumRI1dlc%253d&ratt=0&c3=transparent&bapf=False&c1=transparent&novidslider=1&batt=-1&fatt=0&ptype=4")); lhand_r = new Loader(); lhand_r.contentLoaderInfo.addEventListener("complete", loadImg); lhand_r.load(new URLRequest("http://lads.myspacecdn.com/videos/c.swf?on=0&t=1&racp=0&el=&mt=audio&radd=0&ap=1&bacp=0&facp=0&rast=5&c4=transparent&rapf=True&pertid=4de5b2f35232d0e90000000000000000&isus=true&skin=http%3a%2f%2flads.myspacecdn.com%2fvideos%2fartist.xml&artid=2998049&bast=-1&pguid=be9b8460aa36478a8980e404ed0c53b6&plid=34470&fast=5&cc=en-US&profid=134560903&fapf=True&zad=1&aytast=-1&aytatt=-1&skinid=16&badd=-1&pcc=en-US&fadd=0&aytadd=-1&xad=1&yad=1&c2=transparent&uid=106559696&logerr=0&hash=MIG%252fBgorBgEEAYI3WAOtoIGwMIGtBgorBgEEAYI3WAMBoIGeMIGbAgMCAAECAmYDAgIAwAQIiz0QZ2x75fAEEBnHlYFK8Z%252bhJnplByBMGkwEcD8YnYpA8cUBDhpaDxj3sAuxX7oNzp7cL%252fXFOte%252bVHwm2fdfHNPAh%252bVnYTEqf636C9YT7twEtxVCBt5xDFlnbhk%252bQ3s9EKYIS2MmkZU0EER7fRWAMizfJ0kxAQOCGGB8Sqsj%252bPEtN7fkPGUumRI1dlc%253d&ratt=0&c3=transparent&bapf=False&c1=transparent&novidslider=1&batt=-1&fatt=0&ptype=4")); lface = new Loader(); lface.contentLoaderInfo.addEventListener("complete", loadImg); lface.load(new URLRequest("http://image.blog.livedoor.jp/k_yon/imgs/c/c/cc3baf4f.png")); lnegi = new Loader(); lnegi.contentLoaderInfo.addEventListener("complete", loadImg); lnegi.load(new URLRequest("http://image.blog.livedoor.jp/k_yon/imgs/4/c/4cd1ba9c.png")); body = new Parts(0,0,200,140); head0 = new Parts(106,0,212,112); hair_r = new Parts(0,6,77,13); arm_r = new Parts(0,91,197,119); negi = new Parts(0,0,118,15); head1 = new Parts(106,0,212,112); hair_l = new Parts(132,6,141,16); } private function loadImg(e:flash.events.Event):void{ if(++lcount==6){ lbody.width=116;lbody.height=172;lbody.x=150;lbody.y=93; lhair_l.width=82;lhair_l.height=257; lhair_r.width=85;lhair_r.height=247; lhand_r.width=96;lhand_r.height=43;lhand_r.x=113;lhand_r.y=5; lface.width=114;lface.height=111;lface.x=47;lface.y=0; lnegi.width=124;lnegi.height=44; hair_r.addChild(lhair_r); head0.addChild(hair_r); body.addChild(head0); negi.addChild(lnegi); arm_r.addChild(negi); arm_r.addChild(lhand_r); body.addChild(arm_r); body.addChild(lbody); head1.addChild(lface); hair_l.addChild(lhair_l); head1.addChild(hair_l); body.addChild(head1); addChild(body); } } } // -------------------------------------------- class Parts extends Sprite { public var originX:Number; public var originY:Number; public var baseX:Number; public var baseY:Number; private var GShape:flash.display.Shape; public function Parts( bx:Number, by:Number, gx:Number, gy:Number ) { x = baseX = bx; y = baseY = by; originX = gx; originY = gy; } public function rotate( rad:Number ):void { var tmpX:Number = baseX - originX; var tmpY:Number = baseY - originY; x = tmpX * Math.cos(rad) - tmpY * Math.sin(rad) + originX; y = tmpY * Math.cos(rad) + tmpX * Math.sin(rad) + originY; rotation = rad / Math.PI * 180; } public function showRotatePoint():void { GShape = new flash.display.Shape(); GShape.graphics.beginFill(0xff0000); GShape.graphics.drawCircle(0,0,5); GShape.graphics.endFill(); GShape.x = originX; GShape.y = originY; addChild(GShape); } public function hideRotatePoint():void { removeChild(GShape); } } forked from: はちゅね