- 2009年3月14日 17:03
- ActionScript 3.0
Event.PASTEのコードをすぐに忘れてしまうため覚え書き。FlashPalayer10から実装されたClipboard.generalClipboardプロパティで、ユーザーのOSレベルでのクリップボードへのアクセスが可能になる。ただし、セキュリティのためEvent.PASTEイベントリスナー内でしか実行(取得)できない。これを解決するためには、ペーストを受け取るInteractiveObjectをスーパークラスとするインスタンスのcontextMenuに、ペースト(contextMenu.clipboardMenu && contextMenu.clipboardItems.paste)を許可したContextMenuクラスインスタンスを与える。あとはペーストを受け取るインスタンスにEvent.PASTEをリスナー登録すれば完了
package {
import flash.desktop.Clipboard;
import flash.desktop.ClipboardFormats;
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.events.Event;
import flash.ui.ContextMenu;
public class Example extends MovieClip {
public function Example():void {
var pasteTarget:Sprite = addChild(new Sprite()) as Sprite;
pasteTarget.graphics.beginFill(0);
pasteTarget.graphics.drawRect(0, 0, 100, 100);
var contextMenu:ContextMenu = new ContextMenu();
contextMenu.clipboardMenu = contextMenu.clipboardItems.paste = true;
pasteTarget.contextMenu = contextMenu;
pasteTarget.addEventListener(Event.PASTE,pasteHandler)
}
private function pasteHandler(e:Event):void {
var clipboadStr:String = Clipboard.generalClipboard.getData(ClipboardFormats.TEXT_FORMAT) as String;
trace(clipboadStr)
}
}
}



