AIRããã°ã©ã ããã¯ãªããããŒãã«ã¢ã¯ã»ã¹ãã
ä»å説æããã®ã¯ãAIRããã°ã©ã ããã¯ãªããããŒãã«ã¢ã¯ã»ã¹ããæ¹æ³ã ã
ãã€ãã£ãOSãæã€ã¯ãªããããŒãã«ã¢ã¯ã»ã¹ãããšãä»ã®ã¢ããªã±ãŒã·ã§ã³ãšé£æºããŠã³ããŒ&ããŒã¹ããè¡ãããšãã§ããããã«ãªãã
AIRã§ãã¯ãªããããŒãã«ã¢ã¯ã»ã¹ããããã«çšããã¯ã©ã¹ã¯ä»¥äžã®2ã€ã ã
- flash.desktop.ClipboardManager - ã¯ãªããããŒãã«ã¢ã¯ã»ã¹ããããã®ãããŒãžã£ã¯ã©ã¹
- flash.desktop.TransferableData - ã¯ãªããããŒãå ã®ããŒã¿ã衚ããªããžã§ã¯ã
åŸè
ã®TransferableDataã¯ã©ã¹ã¯ããã©ãã°&ããããåŠçã§ãå©çšãããTransferableDataã¯ãã¢ããªã±ãŒã·ã§ã³å€éšã®ç°å¢ãšããåãããããŒã¿ãè¡šãæœè±¡çãªã¯ã©ã¹ã ã
詳ãã説æã¯ãååã®èšäºãåç §ããŠããã ãããã
ã¯ãªããããŒãã«ã¢ã¯ã»ã¹ããããã°ã©ã ãæžãã®ã¯ããã£ããªãã»ã©ç°¡åã ã
以äžã®ããã«ãClipboardManager.accessClipboard()ã¡ãœããã«é¢æ°ãªããžã§ã¯ããæž¡ããå
éšã§ClipboardManager.dataããããã£ã«ã¢ã¯ã»ã¹ããã ãã ãåããããã£ã¯TransferableDataåã§ãããããããã£ã«å€ãã»ããããã°ã¯ãªããããŒãã«ããŒã¿ãå
¥ããåããããã£ãåç
§ããã°ã¯ãªããããŒãããããŒã¿ãèªã¿åºãããšãã§ããã
// ã¯ãªããããŒããžã®ã¢ã¯ã»ã¹ã¯accessClipboard()ã®
// åŒæ°ã«æž¡ãã颿°å
ã§è¡ãã
ClipboardManager.accessClipboard(function():void {
// ã¯ãªããããŒãããã®ããŒã¿èªã¿åºã
var clipboardData:TransferableData = ClipboardManager.data;
});
var data:TransferableData = ...
ClipboardManager.accessClipboard(function():void {
// ã¯ãªããããŒããžã®ããŒã¿ã»ãã
ClipboardManager.data = data;
});
ClipboardManager.accessClipboard()ã¡ãœããã«åŒãæž¡ãã颿°ã®ãããã¯å
ã§ã¯ãªãããããªãClipboardManager.dataã«ã¢ã¯ã»ã¹ãããšã以äžã®ãããªãšã©ãŒãçºçããã
|
|
ClipboardManager.dataããããã£ã«äžæ£ã¢ã¯ã»ã¹ããéã®ãšã©ãŒ |
ã¡ãªã¿ã«ãAIRã§ã¯ãã¯ãªããããŒãã«æ ŒçŽã§ããããŒã¿ã¯äžã€ã ãã ãã¯ãªããããŒãã«åŸããããŒã¿ã远å ãããšãåã®ããŒã¿ã¯ç Žæ£ãããŠããŸãã
ã§ã¯ã以äžãèžãŸããäžã§ãä»åã®ãµã³ãã«ããã°ã©ã ã解説ããŠãããã
ã¯ãªããããŒãåŠçã®ãµã³ãã«ããã°ã©ã
ä»åã®ãµã³ãã«ã¯ããã©ãã°&ããããç·šã§å©çšãããµã³ãã«ã«å€å°äŒŒããŠããã
ãã€ãã£ãOSäžã§ãã¡ã€ã«ãã¯ãªããããŒãã«å ¥ã(å³ã¯ãªãã¯âã³ããŒãªã©ã§)ãä»åã®ã¢ããªã±ãŒã·ã§ã³äžã§ãCããšããããŒãæŒãã°ããã®ãã¡ã€ã«ã®ã¢ã€ã³ã³ãã¢ããªã±ãŒã·ã§ã³å ã«åŒµãä»ãã
|
|
ãCãããŒã§ãã¢ããªã±ãŒã·ã§ã³å ã«ãã¡ã€ã«ãã³ããŒã§ãã |
ã¢ããªã±ãŒã·ã§ã³äžã«è²Œãä»ãããã¡ã€ã«ãã³ããŒããããšãã§ãããã¢ããªã±ãŒã·ã§ã³äžã§ãã¡ã€ã«ã®ã¢ã€ã³ã³ãéžæãããšãéžæããã¢ã€ã³ã³ãåéæã«ãªãããã®ç¶æ ã§ãVãããŒãæŒããšã¯ãªããããŒãã«ãã¡ã€ã«ã®ããŒã¿ãæ ŒçŽãããWindowsã®ãšã¯ã¹ãããŒã©ãªã©ã§ããŒã¹ãããããšãã§ããã
|
|
ãã¡ã€ã«ã®ã¢ã€ã³ã³ãéžæãããšãã¢ã€ã³ã³ãåéæã«ãªãã»ã»ã» |
以äžãããµã³ãã«ã¢ããªã±ãŒã·ã§ã³ã®ãœãŒã¹ã³ãŒãã ã
<?xml version="1.0" encoding="utf-8"?>
<mx:WindowedApplication xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" applicationComplete="init()">
<mx:Script>
<![CDATA[
import flash.desktop.Icon;
import mx.core.UIComponent;
import flash.filesystem.File;
import flash.desktop.*;
// (1) éžæããããã¡ã€ã«ãä¿æããŠãã倿°
private var selectedFileImage:UIComponent;
// ã«ãŒãèŠçŽ ãWindowedApplicationãã®applicationComplete屿§ã«æå®ãããåæåã¡ãœãã
private function init():void {
// (2) 衚瀺é åå
ã§ããŒããŒããæŒãããæã®åŠçã远å
this.stage.addEventListener(KeyboardEvent.KEY_DOWN, function(event:KeyboardEvent):void {
if (event.keyCode == Keyboard.V) {
onPaste();
} else if (event.keyCode == Keyboard.C) {
onCopy();
}
});
}
// ãã¡ã€ã«ã®ããŒã¹ãåŠç
private function onPaste():void {
// (3) ã¯ãªããããŒããžã®ã¢ã¯ã»ã¹
ClipboardManager.accessClipboard(function():void {
// ã¯ãªããããŒãå
ã®ããŒã¿ãååŸãããã¡ã€ã«åœ¢åŒã®ããŒã¿ãããªãã£ãå Žåã¯äœãããªã
var data:TransferableData = ClipboardManager.data;
if (!data.hasFormat(TransferableFormats.FILE_LIST_FORMAT)) {
return;
}
// éžæããããã¡ã€ã«ãååŸ
var files:Array = data.dataForFormat(TransferableFormats.FILE_LIST_FORMAT) as Array;
for each (var file:File in files) {
// ã¢ã€ã³ã³ãšã©ãã«ã®è²Œãä»ã
var icon:Icon = file.icon;
for each (var bitmapData:BitmapData in icon.bitmaps) {
// 32x32ã®ã¢ã€ã³ã³ã®ã¿å¯Ÿè±¡ãšãã
if (bitmapData.height == 32) {
// ã¢ã€ã³ã³ç»åãã³ã³ããŒãã³ããšããŠãã£ã³ãã¹ã«è¿œå
var fileImage:UIComponent = new UIComponent();
fileImage.addChild(new Bitmap(bitmapData));
// ãã¡ã€ã«ã®ãã¹ãã³ã³ããŒãã³ãã®ååã«ããŠãã
fileImage.name = file.nativePath;
fileImage.toolTip = file.name;
fileImage.width = 40;
fileImage.height = 40;
// ã¢ã€ã³ã³ãã¯ãªãã¯ãããéã®åŠç
fileImage.addEventListener(MouseEvent.CLICK, onFileImageClick);
// ãã£ã³ãã¹ã«è¿œå
view.addChild(fileImage);
}
}
}
});
}
// ãã¡ã€ã«ã®ã¢ã€ã³ã³ãã¯ãªãã¯ãããéã®åŠç
private function onFileImageClick(event:MouseEvent):void {
// 以åéžæãããŠãããã¡ã€ã«ã€ã¡ãŒãžã®éæåºŠã1ã«æ»ã
var fileImage:UIComponent = event.target as UIComponent;
if (selectedFileImage)
selectedFileImage.alpha = 1.0;
fileImage.alpha = .5;
selectedFileImage = fileImage;
}
// ãã¡ã€ã«ã®ã³ããŒåŠç
private function onCopy():void {
if (!selectedFileImage) {
return;
}
// (4) ã³ã³ããŒãã³ãåããã¡ã€ã«ã®ãã¹ãšããFileãªããžã§ã¯ããäœæããŠ
// ã¯ãªããããŒãã«æ ŒçŽ
var file:File = new File(selectedFileImage.name);
// ã¯ãªããããŒãã«å
¥ããããŒã¿ãäœæ
var transfer:TransferableData = new TransferableData();
transfer.addData([file], TransferableFormats.FILE_LIST_FORMAT, true);
// ã¯ãªããããŒãã«ããŒã¿ã远å
ClipboardManager.accessClipboard(function():void {
ClipboardManager.data = transfer;
});
}
]]>
</mx:Script>
<mx:Label x="10" y="10" text="äžã®ãã£ã³ãã¹ã«ã¯ãã¡ã€ã«ãã³ããŒ&ããŒã¹ãã§ããŸãã(C=ã³ã㌠V=ããŒã¹ã)"/>
<mx:Tile id="view" borderStyle="none" x="0" y="36" width="473" height="320" backgroundColor="white"/>
</mx:WindowedApplication>
ãã€ã³ãã解説ããŠãããã
(1) ã¢ããªã±ãŒã·ã§ã³å
ã§éžæããããã¡ã€ã«ã®æ
å ±ãæ ŒçŽããããã®å€æ°selectedFileImageã宣èšããŠããã
private var selectedFileImage:UIComponent;
(2) ã¢ããªã±ãŒã·ã§ã³ãèµ·åããããã¢ããªã±ãŒã·ã§ã³ã®è¡šç€ºé åå ã§ããŒããŒããæŒãããéã®ã€ãã³ããªã¹ãã远å ããŠããããVãã§ããŒã¹ãããCãã§ã³ããŒã ãæ¬åœã¯ãCtrlããŒãšã®çµã¿åããã§ã³ããŒãšããŒã¹ããè¡ãããã£ãã®ã ããAIRã®ããŒã¿çã§ã¯CtrlããŒãšéåžžããŒã®çµã¿åãããæ£ããæ±ãããšãã§ããªãã
// (2) 衚瀺é åå
ã§ããŒããŒããæŒãããæã®åŠçã远å
this.stage.addEventListener(KeyboardEvent.KEY_DOWN, function(event:KeyboardEvent):void {
if (event.keyCode == Keyboard.V) {
onPaste();
} else if (event.keyCode == Keyboard.C) {
onCopy();
}
});
(3) ãVãããŒãæŒããããã¡ã€ã«ã®ããŒã¹ããè¡ãããéã®åŠçãè¡ã£ãŠããã®ã以äžã®éšåã ã
// (3) ã¯ãªããããŒããžã®ã¢ã¯ã»ã¹
ClipboardManager.accessClipboard(function():void {
// ã¯ãªããããŒãå
ã®ããŒã¿ãååŸãããã¡ã€ã«åœ¢åŒã®ããŒã¿ãããªãã£ãå Žåã¯äœãããªã
var data:TransferableData = ClipboardManager.data;
if (!data.hasFormat(TransferableFormats.FILE_LIST_FORMAT)) {
return;
}
// éžæããããã¡ã€ã«ãååŸ
var files:Array = data.dataForFormat(TransferableFormats.FILE_LIST_FORMAT) as Array;
åè¿°ã®éããClipboardManager.accessClipboard()ã¡ãœããã«é¢æ°ãåŒãæž¡ããå
éšã§ClipboardManager.dataããããã£ã«ã¢ã¯ã»ã¹ããŠãããTransferableDataã¯ã©ã¹ã®hasFormat(*ãã©ãŒããã圢åŒ*)ã¡ãœãããå©çšããŠãã¯ãªããããŒãå
ã®ããŒã¿ããã¡ã€ã«ã®åœ¢åŒãã©ãããå€å®ããŠãããã¯ãªããããŒãå
ã®ããŒã¿åœ¢åŒããã¡ã€ã«(è€æ°ãå¯)ã ã£ãå Žåã¯ãTransferableDataã¯ã©ã¹ã®dataForFormat(*ãã©ãŒããã圢åŒ*)ã¡ãœãããçšããŠããŒã¿ãååŸããŠããã
(4) æåŸã®ãã€ã³ãã¯ãã¢ããªã±ãŒã·ã§ã³äžã§ãCãããŒãæŒãããéãã¯ãªããããŒãã«ãã¡ã€ã«ã®æ å ±ãæ ŒçŽããåŠçã ã
// (4) ã³ã³ããŒãã³ãåããã¡ã€ã«ã®ãã¹ãšããFileãªããžã§ã¯ããäœæããŠ
// ã¯ãªããããŒãã«æ ŒçŽ
var file:File = new File(selectedFileImage.name);
// ã¯ãªããããŒãã«å
¥ããããŒã¿ãäœæ
var transfer:TransferableData = new TransferableData();
transfer.addData([file], TransferableFormats.FILE_LIST_FORMAT, true);
// ã¯ãªããããŒãã«ããŒã¿ã远å
ClipboardManager.accessClipboard(function():void {
ClipboardManager.data = transfer;
});
Fileã¯ã©ã¹ã®ãªããžã§ã¯ããTransferableData.addData()ã¡ãœããã§æ ŒçŽããClipboardManager.dataããããã£ã«ããŒã¿ãã»ããããŠããããã£ãããã ãã§ãã¯ãªããããŒãã«ãã¡ã€ã«æ
å ±ãæ ŒçŽã§ããã
ä»åã¯ãAIRããã°ã©ã ãããã€ãã£ãOSãæã€ã¯ãªããããŒãã«ã¢ã¯ã»ã¹ããæ¹æ³ã解説ãããClipboardManagerã¯ã©ã¹ãšTransferableDataã¯ã©ã¹ãšããããã£ãäºã€ã®ã¯ã©ã¹ã«ã€ããŠã®ç¥èããããã°ããã®ã§ãéåžžã«ç°¡æœã«ãŸãšãŸã£ãAPIã ãšèšãããã