Actionscript 3 将图像拖放到AIR应用程序
我有一个带图像的舞台。现在,我喜欢通过从随机操作系统文件夹拖放另一个图像来更改此图像。有人知道这是怎么回事吗 演示如下:Actionscript 3 将图像拖放到AIR应用程序,actionscript-3,drag-and-drop,air,Actionscript 3,Drag And Drop,Air,我有一个带图像的舞台。现在,我喜欢通过从随机操作系统文件夹拖放另一个图像来更改此图像。有人知道这是怎么回事吗 演示如下: 空中拖放的基础知识@基本上可以工作。非常感谢你。但它是否也适用于movieclip而不是sprite?它适用于all和他的后代(sprite、movieclip、TextField、Stage…)我可以解决这个问题:我在舞台上放置了一个MC,并设置在eventlistener上。再次感谢! package { import flash.desktop.Clipboa
空中拖放的基础知识@基本上可以工作。非常感谢你。但它是否也适用于movieclip而不是sprite?它适用于all和他的后代(sprite、movieclip、TextField、Stage…)我可以解决这个问题:我在舞台上放置了一个MC,并设置在eventlistener上。再次感谢!
package {
import flash.desktop.ClipboardFormats;
import flash.desktop.NativeDragManager;
import flash.display.Bitmap;
import flash.display.Loader;
import flash.display.Sprite;
import flash.events.Event;
import flash.events.NativeDragEvent;
import flash.filesystem.File;
import flash.filesystem.FileMode;
import flash.filesystem.FileStream;
import flash.utils.ByteArray;
public class DragApp extends Sprite
{
private var target:Sprite;
private var moveBitmap:Bitmap;
private var loader:Loader;
public function DragApp()
{
target = new Sprite();
target.graphics.lineStyle(1, 0x0, 1);
target.graphics.beginFill(0xffffff, 1);
target.graphics.drawRect(0, 0, 100, 100);
target.x = 100;
target.y = 100;
this.addChild(target);
//
moveBitmap = new Bitmap();
moveBitmap.x = target.x;
moveBitmap.y = target.y;
this.addChild(moveBitmap);
//
loader = new Loader();
//
target.addEventListener(NativeDragEvent.NATIVE_DRAG_ENTER, dragEnterHandler);
}
private var currentFile:File;
private function dragEnterHandler(event:NativeDragEvent):void
{
moveBitmap.bitmapData = null;
//
var files:Array = event.clipboard.getData(ClipboardFormats.FILE_LIST_FORMAT) as Array;
currentFile = files[0];
var arrPath:Array = currentFile.name.split('.');
var type:String = arrPath[arrPath.length-1];
if (!currentFile.isDirectory && (type == 'png' || type == 'jpg')) {
NativeDragManager.acceptDragDrop(target);
//
var stream:FileStream = new FileStream();
stream.open(currentFile, FileMode.READ);
var bytes:ByteArray = new ByteArray();
stream.readBytes(bytes);
stream.close();
//
loader.loadBytes(bytes);
loader.contentLoaderInfo.addEventListener(Event.COMPLETE, loadCompleteHandler);
//
target.addEventListener(NativeDragEvent.NATIVE_DRAG_OVER, dragOverHandler);
target.addEventListener(NativeDragEvent.NATIVE_DRAG_DROP, dragDropHandler);
target.addEventListener(NativeDragEvent.NATIVE_DRAG_EXIT, dragExitHandler);
}
}
private function loadCompleteHandler(event:Event):void
{
var content:Bitmap = (loader.content) as Bitmap;
moveBitmap.bitmapData = content.bitmapData;
moveBitmap.width = target.width;
moveBitmap.height = target.height;
moveBitmap.smoothing = true;
moveBitmap.alpha = 0.8;
}
private function dragOverHandler(event:NativeDragEvent):void
{
}
private function dragDropHandler(event:NativeDragEvent):void
{
moveBitmap.alpha = 1;
//
target.removeEventListener(NativeDragEvent.NATIVE_DRAG_OVER, dragOverHandler);
target.removeEventListener(NativeDragEvent.NATIVE_DRAG_DROP, dragDropHandler);
target.removeEventListener(NativeDragEvent.NATIVE_DRAG_EXIT, dragExitHandler);
}
private function dragExitHandler(event:NativeDragEvent):void
{
moveBitmap.bitmapData = null;
//
target.removeEventListener(NativeDragEvent.NATIVE_DRAG_OVER, dragOverHandler);
target.removeEventListener(NativeDragEvent.NATIVE_DRAG_DROP, dragDropHandler);
target.removeEventListener(NativeDragEvent.NATIVE_DRAG_EXIT, dragExitHandler);
}
}
}