2007/12/4 久米
タイムライン上に存在するMovieClip(インスタンス)を、スクリプトで複製する。
| 方法 | 説明 | |
| 1 | インスタンス.duplicateMovieClip(新しい名前, 重なり順); | インスタンスを複製するメソッド。 |
//フレームアクション
//複製 雨
var depth=1;
this.onEnterFrame=function(){
var nm="raindrop_mc"+depth;
raindrop_mc.duplicateMovieClip(nm, depth);
depth++;
}
|
//複製 雨
//raindrop_mcのスクリプト
onClipEvent(load){
_x=Math.floor(Math.random()*Stage.width);
_y=-10;
_alpha=20+Math.random()*50;
}
onClipEvent(enterFrame){
_y+=10;
if(_y>Stage.height){
this.removeMovieClip();//スクリプトで生成したもののみ削除可能
}
}
|
タイムライン上に存在しないMovieClip(インスタンス)を、スクリプトから生成する。
| 方法 | 説明 | |
| 1 | インスタンス.attachMovie(リンケージ識別子, 新しい名前, 重なり順); | インスタンス上(ステージ上)に、 |
※リンケージ識別子について:
flaファイルをパブリッシュしてswfファイルにする時、ライブラリの中で一度もタイムライン上に配置していないものは出力されません。
しかし、リンケージ識別子を持つものはパブリッシュされます。
※リンケージ識別子設定方法
シンボルのプロパティで識別子を大抵シンボル名に、および「actionScriptに書き出し」にチェックを入れる。
//生成 コイン
//フレームアクション
var depth=1;
goldMine_mc.onRelease=function(){
var coinName="coin"+depth;
_root.attachMovie("CoinMC", coinName, depth);
newObj_mc=eval(coinName);//"_root."+coinNameでも可
newObj_mc._x=_root._xmouse;
newObj_mc._y=_root._ymouse;
depth++;
}
|
コラム 複製や生成したオブジェクトのfunction
obj.setPosition(x, y); などとやりたいところですが、
|
//雪SnowMC
//フレームアクション
var mado=_root.getMado();//雪を降らせる範囲を示すオブジェクトを取得
var w = mado._width;
var h = mado._height;
var xx=mado._x;
var yy=mado._y;
var n = Math.round(Math.random()*1000);//0-999までの乱数
this.swapDepths(n);
this._alpha = 100*n/1000+50;
this._x = Math.random()*w+xx;
this._y = Math.random()*h+yy;
this._xscale = this._yscale=Math.random()*50+100;
var dx = Math.random()*200;
var fy = 1+Math.random()*3;
this.onEnterFrame=function() {
this._x += Math.cos((this._y+dx)/60);
this._y += fy;
if (this._y>=(h+yy)) {
this._y = yy;
}
if ((this._x>=(w+xx)) || (this._x<=xx)) {
this._x = Math.random()*w+xx;
this._y = yy;
}
}
|