- OpenLaszlo紹介
- プログラム構造関連
- スクリプト
- Javascript基礎
- 基礎知識
- ビュー<view>
- レイアウト
- 動かす
- 入力デバイス
- 文字
- 数値
- 日付
- オブジェクト指向
- 標準コンポーネント
- データの扱い
- データ操作(基礎)
- 応用編
–
アシアル株式会社さまのhttp://blog.asial.co.jp/641のFlexでのブログ記事を参考にOpenLaszloで書き直してみました。 元記事はActionScript3.0で書かれているので、OpenLaszloではswf9以上でコンパイル必要です。
スクリプト全開である意味OpenLaszloらしさのないコードですが(^^;)、ActionScriptコードを元にしたこういう応用の仕方もあるという例です。
(OpenLaszlo4.6.1/swf9)
<?xml version="1.0" encoding="UTF-8"?> <canvas proxied="false" bgcolor="0xeeeeee"> <class name="replace"> <attribute name="url" type="string"/> <passthrough> import flash.display.Loader; import flash.display.MovieClip; import flash.geom.Point; import flash.net.URLRequest; import flash.events.Event; import flash.events.MouseEvent; </passthrough> <handler name="oninit"> var bitmap; var originBitmapData; var oldColor; var loader = new Loader(); var urlReq = new URLRequest(this.url); var vr = this.getMCRef(); function finished_loading(event){ var loader = event.currentTarget.loader; this.bitmap = loader.content; this.originBitmapData = this.bitmap.bitmapData.clone(); } function initHandler(event){ vr = MovieClip(loader.content); } loader.addEventListener(MouseEvent.MOUSE_MOVE, onMouseMove); loader.contentLoaderInfo.addEventListener(flash.events.Event.COMPLETE, finished_loading); loader.contentLoaderInfo.addEventListener(Event.INIT, initHandler); loader.load(urlReq); vr.addChild(loader); function onMouseMove(event) { var color = this.originBitmapData.getPixel(event.localX, event.localY); if (color == this.oldColor) return; var bitmapData = this.originBitmapData.clone(); var newColor = 0xFFFFFF66; bitmapData.threshold(this.originBitmapData, this.originBitmapData.rect, new Point(0,0), '==', color, newColor, 0xFFFFFF); this.bitmap.bitmapData = bitmapData; this.oldColor = color; } </handler> </class> <replace url="image1.png"/> </canvas>
※アシアル株式会社松田さまにはソース、画像の改変と掲載の許可をいただいております。(2009/12/4)