ActionScript setTテンプレート ひとつの関数でたくさんのムービークリップを動かす例です。 SCX=Stage.width;SCY=Stage.height;MTDP=300;lo=0; var tdp=new Array(); //-------------------- func function r2xx(r,sp){return sp*Math.cos(r);} function r2yy(r,sp){return sp*Math.sin(r);} function xy2r(xx,yy){return Math.atan2(yy,xx)/Math.PI*180;} function rand(a){return Math.floor(Math.random()*a);} function randF(a){return Math.random()*a;} function randX(a){a=Math.floor(Math.random()*(a*2+1))-a;if(a==0){a=1;}return a;} function wrapvalue(a){return a%360;} function rgb(r,g,b){return (r<<16)+(g<<8)+b;} function chgS(mc,s){mc.s=s;mc._xscale=s;mc._yscale=s;} // cntrBordr function brdRight(mc){return SCX-mc._width/2;}function brdBottom(mc){return SCY-mc._height/2;} function brdTop(mc){return mc._height/2;}function brdLeft(mc){return mc._width/2;} // hideBordr function hideRight(mc){return SCX+mc._width/2;}function hideBottom(mc){return a=SCY+mc._height/2;} function hideTop(mc){return -mc._height/2;}function hideLeft(mc){return -mc._width/2;} //-------------------- setT function setT(x,y,imgn,t1,pri){ if(!tdp[pri])tdp[pri]=0; na=imgn+pri+"_"+tdp[pri]; this.attachMovie(imgn,na,pri*MTDP-tdp[pri]); ++tdp[pri];if(tdp[pri]==MTDP)tdp[pri]=0; this[na].t=t1; this[na]._x=x;this[na]._y=y; this[na]._alpha=30; this[na].h=0;this[na]._xscale=100;this[na]._yscale=100;this[na].s=100; this[na].xx=0;this[na].yy=0;this[na].smo=0; //----- t init switch(t1){/*★1*/ case 1:this[na].ks=0; //this[na].onPress=function(){getUrl("a.html");trace("HI");} //this[na].onMouseDown=function(){if(this.ks==0){this.ks=1;}} //this[na].onMouseUp=function(){this.ks=0;} break;} //----- t move this[na].onEnterFrame=function(){ var sx,sy,c,i,cx,cy,w; cx=_root._xmouse;cy=_root._ymouse; sx=this._x;sy=this._y; switch(t1){/*★2*/ case 1:++sx; if(sx>hideRight(this))this.removeMovieClip(); break; case 2:sx+=this.xx;sy+=this.yy; this._rotation=wrapvalue(this._rotation+10); ax=brdRight(this);if(sx>ax){sx=ax;this.xx=-this.xx;} ax=brdLeft(this);if(sx<ax){sx=ax;this.xx=-this.xx;} ay=brdBottom(this);if(sy>ay){sy=ay;this.yy=-this.yy;} ay=brdTop(this);if(sy<ay){sy=ay;this.yy=-this.yy;} break; } this._x=sx;this._y=sy; if(this.smo==0){this._xscale=this.s;this._yscale=this.s;} } return this[na]; } //-------------------- Timer /*tim1._visible=false; tim1.onEnterFrame=function(){ if(lo%5==0){ c=setT(-10,SCY/2+50,"chr1",1,1);chgS(c,30);} ++lo; }*/ for(i=0;i<20;i++){setT(10,10,"chr1",1,1);} for(i=0;i<20;i++){c=setT(rand(SCX),rand(SCY),"chr1",2,2);c.xx=randX(4);c.yy=randX(4);}・関数 setT(X座標,Y座標,ムービークリップの識別子名,動き番号,深度):ムービークリップ作成 //----- t initの所(★1)に、「動き番号」ごとのイベントなど初期設定を書きます。 //----- t moveのswitch文の所(★2)に、「動き番号」ごとの動きを書きます。 ここで使える変数 sx,sy…座標 this.s…大きさ その他、this._alpha,this._rotationなどムービークリップのプロパティ グローバル MTDP:1深度ごとのムービークリップ数 SCX,SCY:画面サイズ サンプルの実行結果 |