モノに属性を付けてみよう!
2010/10/10
さて、前回のサンプルで画面にマルを出したのはいいんだけど・・・
スタートするには光をクリックしてね! >> サンプルをダウンロード
問題の、オブジェクトっていうのは、これ。
// 表示オブジェクト
この DispObject っていうモノの中に、青いマルと、青いマルの寿命を1パッケージにまとめているんだ。var DispObject = function(obj0, lifetime0) { this.obj = obj0; // 表示オブジェクト this.lifetime = lifetime0; // 寿命 } あと、一度作った青マルを後から消そうと思ったら、作りっぱなしじゃダメ。 ちゃんと作ったモノを、ぜーんぶ覚えてなくっちゃ。 そのために、objArray っていう配列を用意したよ。
var objArray = new Array();
この配列に、作った青マルを入れておくの。
準備ができたところで、青いマルを出すところを、こんな風にしてみるね。
myScript.js の中:
こうすれば、「画面に出しっ放し」じゃなくて、ちゃんと寿命を覚えていられるようになるんだね。// Xamlオブジェクトを生成 function addObj() { var obj = theControl.content.createFromXaml( '<Ellipse Width="20" Height="20" Fill="Blue"/> ); obj["Canvas.Left"] = ClickX; obj["Canvas.Top"] = ClickY; // 作った青いマル+寿命(50)=表示オブジェクトを作る var dispObj = new DispObject( obj, 50 ); objArray.push( dispObj ); // 表示オブジェクトを配列に記憶しておく。 theCanvas.children.Add( obj ); // こうすると、青いマルが画面に追加される }
一定時間で青マルを消すには、作った青マルを全部チェックして、
// Xamlオブジェクトを削除
ふぅ。。。消すのって、出すのよりも手間かかるんだ。function removeObj( obj_array ) { for(var i=0; i < obj_array.length; i++) { // 配列を順番にチェック var dispObj = obj_array[i]; if( --dispObj.lifetime <= 0 ){ // 寿命を1つ縮めて、それが0になったら theCanvas.children.Remove( dispObj.obj ); // 画面から青マルを消す dispObj.obj = null; // こうするとメモリーからも完全に消えるみたい dispObj = null; objArray.splice( i, 1 ); // 配列からも青マルを消す --i; // 1つ消えたんだから、チェックの順番を繰り上げる } } } そーいえば、部屋を散らかすより、片付ける方が大変だって気がするなぁ。。。
これでもう、モノに“属性”を付ける方法がわかったよね。 |