Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/actionscript-3/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Actionscript 3 AS3从服务器中的SWF浏览客户端文件_Actionscript 3_Filereference - Fatal编程技术网

Actionscript 3 AS3从服务器中的SWF浏览客户端文件

Actionscript 3 AS3从服务器中的SWF浏览客户端文件,actionscript-3,filereference,Actionscript 3,Filereference,这里是AS3的新手!: 基本上,我正在尝试编写一个应用程序,让用户选择一个图像文件并显示它,然后我将处理像素,因此我不希望应用程序将图像存储在一个新文件中,而只是管理字节数组 到目前为止,我在Flash中编写了一些工作代码,显示一个窗口来选择图像,然后显示它。但当我将生成的文件myapplication.swf、expressinstall.swf、index.html和js文件夹上传到服务器时,窗口不再显示 我正在使用FileReference.browse方法 怎么了 编辑:正如这里的_as

这里是AS3的新手!:

基本上,我正在尝试编写一个应用程序,让用户选择一个图像文件并显示它,然后我将处理像素,因此我不希望应用程序将图像存储在一个新文件中,而只是管理字节数组

到目前为止,我在Flash中编写了一些工作代码,显示一个窗口来选择图像,然后显示它。但当我将生成的文件myapplication.swf、expressinstall.swf、index.html和js文件夹上传到服务器时,窗口不再显示

我正在使用FileReference.browse方法

怎么了

编辑:正如这里的_asMan所指出的,我们遗漏了一些代码,在这里,它通过_asMan的建议得到了改进

我的包裹:

package searchfiles 
{
    import flash.display.BitmapData;
    import flash.display.Loader;
    import flash.display.Sprite;
    import flash.net.FileReference;
    import flash.net.FileReferenceList;
    import flash.net.FileFilter;
    import flash.events.*;
    import flash.net.FileFilter; 
    import flash.net.FileReference; 
    import flash.net.URLRequest; 
    import flash.utils.ByteArray; 
    import flash.display.DisplayObject;

    /**
     * ...
     * @author ddd
     */
    public class searchForFiles extends EventDispatcher
    {
        public var newfile:FileReference;
        public var loader:Loader
        public var bitmapimg:BitmapData;            

        public function searchForFiles() {
            newfile = new FileReference();
            newfile.addEventListener(Event.SELECT, onFileSelected); 
            newfile.addEventListener(Event.CANCEL, onCancel); 
            newfile.addEventListener(IOErrorEvent.IO_ERROR, onIOError); 
            newfile.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onSecurityError); 

            trace("abbiamo instanziato un searchForFiles");
            var textTypeFilter:FileFilter = new FileFilter("Image files (*.png, *.jpg, *tif)", 
                        "*.png; *.jpg; *tif"); 
            newfile.browse([textTypeFilter]);   

        }       

        public function onFileSelected(evt:Event):void 
        { 
            newfile.addEventListener(ProgressEvent.PROGRESS, onProgress); 
            newfile.addEventListener(Event.COMPLETE, onComplete); 
            newfile.load(); 
        } 

        public function onProgress(evt:ProgressEvent):void 
        { 
            trace("Loaded " + evt.bytesLoaded + " of " + evt.bytesTotal + " bytes."); 

        } 

        public function onComplete(evt:Event):void 
        { 
            trace("File was successfully loaded."); 
            loader = new Loader();              
            loader.loadBytes(newfile.data);         
            loader.contentLoaderInfo.addEventListener(Event.COMPLETE, getBitmapData);           
        } 

        private function erroremanip(evt:IOErrorEvent):void {
            trace("errore " + evt);
        }
        private var bitmapData:BitmapData

        public function getBitmapData(e:Event):void {
            var content:* = loader.content;
            bitmapData = new BitmapData(content.width,content.height,true,0x00000000);
            trace("loader.width = " +loader.width);
            dispatchEvent( new Event(Event.COMPLETE));
            //trace("get bitmap data called");
        }

        public function onCancel(evt:Event):void 
        { 
            trace("The browse request was canceled by the user."); 
        } 

        public function onIOError(evt:IOErrorEvent):void 
        { 
            trace("There was an IO Error."); 
        } 
        public function onSecurityError(evt:Event):void 
        { 
            trace("There was a security error."); 
        }                       
    }    
}
这是主要问题

package 
{
    import flash.display.Loader;
    import flash.display.MovieClip;
    import flash.display.Sprite;
    import flash.errors.IOError;
    import flash.events.*;
    import flash.events.MouseEvent;
    import flash.net.URLLoader;
    import flash.net.URLRequest;
    import searchfiles.searchForFiles;

    /**
     * ...
     * @author ddd
     */
    [SWF(width = "550", height = "600")]

    public class Main extends MovieClip 
    {
        public var file:searchForFiles;
        public var mybtn:Loader = new Loader();

        public function Main():void 
        {
            if (stage) init();
            else addEventListener(Event.ADDED_TO_STAGE, init);

        }

        private function init(e:Event = null):void 
        {
            removeEventListener(Event.ADDED_TO_STAGE, init);
            // entry point          
            mybtn.addEventListener(MouseEvent.CLICK, mouseclicked);
            mybtn.addEventListener(IOErrorEvent.IO_ERROR, erroremanip);
            var urlqst:URLRequest = new URLRequest("preview_true.png");
            mybtn.load(urlqst);
            addChild(mybtn);

        }

        public function mouseclicked(e:MouseEvent):void {
            trace("clicked");
            file = new searchForFiles();
            file.addEventListener(Event.COMPLETE, puttheimage);     
        }
        private function erroremanip(e:IOError):void {
            trace("ciao erroreio");
        }
        private function puttheimage(e:Event) :void {
            addChild(file.loader);

        }
    }   
}
package 
{
    import flash.display.Loader;
    import flash.display.MovieClip;
    import flash.display.Sprite;
    import flash.errors.IOError;
    import flash.events.*;
    import flash.events.MouseEvent;
    import flash.net.URLLoader;
    import flash.net.URLRequest;
    import searchfiles.searchForFiles;

    /**
     * ...
     * @author ddd
     */
    [SWF(width = "550", height = "600")]

    public class Main extends MovieClip 
    {
        public var file:searchForFiles;
        public var mybtn:Loader = new Loader();

        public function Main():void 
        {
            if (stage) init();
            else addEventListener(Event.ADDED_TO_STAGE, init);

        }

        private function init(e:Event = null):void 
        {
            removeEventListener(Event.ADDED_TO_STAGE, init);
            // entry point


                     // moved to init
            file = new searchForFiles();
            file.addEventListener(Event.COMPLETE, puttheimage);



            mybtn.addEventListener(MouseEvent.CLICK, mouseclicked);
            mybtn.addEventListener(IOErrorEvent.IO_ERROR, erroremanip);
            var urlqst:URLRequest = new URLRequest("preview_true.png");
            mybtn.load(urlqst);
            addChild(mybtn);


        }

        public function mouseclicked(e:MouseEvent):void {
            trace("clicked");
                    // events need to be set before any active code is run in the object
                    // that is why we moved listeners or else you risk the listener
                    // not getting triggered
                    file.browse()
        }
        private function erroremanip(e:IOError):void {
            trace("ciao erroreio");
        }
        private function puttheimage(e:Event) :void {
            addChild(file.loader);

        }
    }   
}
FileReference用于访问用户本地计算机上的文件。听起来您想从承载SWF文件的同一台服务器加载文件

您不能从Actionscript“浏览”服务器—除非您在服务器上编写代码以启用该功能—但您可以使用URLLoader按名称加载文件

FileReference.browse 当需要通过用户交互触发外部本地沙盒时,即:鼠标单击。 基本上,click事件需要在堆栈的某个地方。 您可以使用验证

但是,您没有发布任何代码,很难确定您到底做错了什么

[编辑]

package searchfiles 
{
    import flash.display.BitmapData;
    import flash.display.Loader;
    import flash.display.Sprite;
    import flash.net.FileReference;
    import flash.net.FileReferenceList;
    import flash.net.FileFilter;
    import flash.events.*;
    import flash.net.FileFilter; 
    import flash.net.FileReference; 
    import flash.net.URLRequest; 
    import flash.utils.ByteArray; 
    import flash.display.DisplayObject;

    /**
     * ...
     * @author ddd
     */
    public class searchForFiles extends EventDispatcher
    {
        public var newfile:FileReference;
        public var loader:Loader
        public var bitmapimg:BitmapData;            

        public function searchForFiles() {
            newfile = new FileReference();
            newfile.addEventListener(Event.SELECT, onFileSelected); 
            newfile.addEventListener(Event.CANCEL, onCancel); 
            newfile.addEventListener(IOErrorEvent.IO_ERROR, onIOError); 
            newfile.addEventListener(SecurityErrorEvent.SECURITY_ERROR, onSecurityError);   
        }


             // new function
        public function browse(event:Event):void{
            var textTypeFilter:FileFilter = new FileFilter("Image files (*.png, *.jpg, *tif)", "*.png; *.jpg; *tif");   
            newfile.browse([textTypeFilter]);
        }




        public function onFileSelected(evt:Event):void 
        { 
                    newfile.addEventListener(ProgressEvent.PROGRESS, onProgress); 
                    newfile.addEventListener(Event.COMPLETE, onComplete); 
                    newfile.load(); 
        } 

        public function onProgress(evt:ProgressEvent):void 
        { 
            trace("Loaded " + evt.bytesLoaded + " of " + evt.bytesTotal + " bytes."); 

        } 

        public function onComplete(evt:Event):void 
        { 
            trace("File was successfully loaded."); 
            loader = new Loader();              
            loader.loadBytes(newfile.data);         
            loader.contentLoaderInfo.addEventListener(Event.COMPLETE, getBitmapData);           
        } 

        private function erroremanip(evt:IOErrorEvent):void {
            trace("errore " + evt);
        }
        private var bitmapData:BitmapData

        public function getBitmapData(e:Event):void {
            var content:* = loader.content;
            bitmapData = new BitmapData(content.width,content.height,true,0x00000000);
            trace("loader.width = " +loader.width);
            dispatchEvent( new Event(Event.COMPLETE));
            //trace("get bitmap data called");
        }

        public function onCancel(evt:Event):void 
        { 
            trace("The browse request was canceled by the user."); 
        } 

        public function onIOError(evt:IOErrorEvent):void 
        { 
            trace("There was an IO Error."); 
        } 
        public function onSecurityError(evt:Event):void 
        { 
            trace("There was a security error."); 
        }                       
    }    
}
这是主要问题

package 
{
    import flash.display.Loader;
    import flash.display.MovieClip;
    import flash.display.Sprite;
    import flash.errors.IOError;
    import flash.events.*;
    import flash.events.MouseEvent;
    import flash.net.URLLoader;
    import flash.net.URLRequest;
    import searchfiles.searchForFiles;

    /**
     * ...
     * @author ddd
     */
    [SWF(width = "550", height = "600")]

    public class Main extends MovieClip 
    {
        public var file:searchForFiles;
        public var mybtn:Loader = new Loader();

        public function Main():void 
        {
            if (stage) init();
            else addEventListener(Event.ADDED_TO_STAGE, init);

        }

        private function init(e:Event = null):void 
        {
            removeEventListener(Event.ADDED_TO_STAGE, init);
            // entry point          
            mybtn.addEventListener(MouseEvent.CLICK, mouseclicked);
            mybtn.addEventListener(IOErrorEvent.IO_ERROR, erroremanip);
            var urlqst:URLRequest = new URLRequest("preview_true.png");
            mybtn.load(urlqst);
            addChild(mybtn);

        }

        public function mouseclicked(e:MouseEvent):void {
            trace("clicked");
            file = new searchForFiles();
            file.addEventListener(Event.COMPLETE, puttheimage);     
        }
        private function erroremanip(e:IOError):void {
            trace("ciao erroreio");
        }
        private function puttheimage(e:Event) :void {
            addChild(file.loader);

        }
    }   
}
package 
{
    import flash.display.Loader;
    import flash.display.MovieClip;
    import flash.display.Sprite;
    import flash.errors.IOError;
    import flash.events.*;
    import flash.events.MouseEvent;
    import flash.net.URLLoader;
    import flash.net.URLRequest;
    import searchfiles.searchForFiles;

    /**
     * ...
     * @author ddd
     */
    [SWF(width = "550", height = "600")]

    public class Main extends MovieClip 
    {
        public var file:searchForFiles;
        public var mybtn:Loader = new Loader();

        public function Main():void 
        {
            if (stage) init();
            else addEventListener(Event.ADDED_TO_STAGE, init);

        }

        private function init(e:Event = null):void 
        {
            removeEventListener(Event.ADDED_TO_STAGE, init);
            // entry point


                     // moved to init
            file = new searchForFiles();
            file.addEventListener(Event.COMPLETE, puttheimage);



            mybtn.addEventListener(MouseEvent.CLICK, mouseclicked);
            mybtn.addEventListener(IOErrorEvent.IO_ERROR, erroremanip);
            var urlqst:URLRequest = new URLRequest("preview_true.png");
            mybtn.load(urlqst);
            addChild(mybtn);


        }

        public function mouseclicked(e:MouseEvent):void {
            trace("clicked");
                    // events need to be set before any active code is run in the object
                    // that is why we moved listeners or else you risk the listener
                    // not getting triggered
                    file.browse()
        }
        private function erroremanip(e:IOError):void {
            trace("ciao erroreio");
        }
        private function puttheimage(e:Event) :void {
            addChild(file.loader);

        }
    }   
}

嗨,彼得,谢谢你的回答,但我确实想访问用户本地机器上的文件!所以我使用FileReference的方向是正确的。也许是与某种许可有关?你是对的,我没有发布任何代码,因为我认为我在构建项目后错过了一些步骤。你的答案仍然正确,这是因为缺乏互动:我正在编辑问题并添加代码,也许你可以指出代码可以改进/可能导致快速失败的某些方面谢谢你!:虽然index.html在firefox上运行良好,但它并不总是在chrome上运行一两次。。。重新启动浏览器后也是一样。哦,真是太好了,很有帮助,我知道哪里会失败!非常感谢你!