前回、ライブラリに登録したMovieClipのリンケージClassへ引数を渡すってのをやりましたが、そうするとそのMovieClipをライブラリからドラッグ・ドロップでステージへ置けないって言われたので・・・
Flash, ライブラリのリンケージClassへ引数が渡せることを知った秋の日
なるほど、そんな不都合もあるのねってことでクラスを修正しました。
ライブラリに “RoundRect” MovieClip を作成し RoundRect Class 書き出し設定をしました。
ステージにMovieClipを2つ先に置いています。
画面をクリックするとRoundRectがクリック地点へ追加されます。
座標をRoundRectのTextFieldへ表示します。
Frame Script
stage.addEventListener(MouseEvent.CLICK, clickHandler); function clickHandler (e:MouseEvent):void { addChild(new RoundRect(new Point(mouseX, mouseY))); } |
RoundRect.as
package { import flash.display.DisplayObject; import flash.display.MovieClip; import flash.geom.Point; import flash.text.TextField; import flash.text.TextFormat; import flash.text.TextFieldAutoSize; import flash.events.Event; public class RoundRect extends MovieClip { public function RoundRect(p:Point = null) { super(); if (p != null) init(p); else addEventListener(Event.ADDED_TO_STAGE, setup); } private function setup(e:Event):void { removeEventListener(Event.ADDED_TO_STAGE, setup); init(new Point(x, y)); } private function init(p:Point):void { alpha = .5; x = p.x; y = p.y; var tf:TextField = new TextField(); var format:TextFormat = new TextFormat(); format.font = 'Helvetica'; format.size = 11; tf.autoSize = TextFieldAutoSize.LEFT; tf.textColor = 0xffffff; tf.defaultTextFormat = format; tf.text = "x:" + p.x + ", " + "y:" + p.y addChild(tf); } } } |