Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/r/76.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
Air 完成后改变状态_Air_Flex4_State_Flashbuilder4 - Fatal编程技术网

Air 完成后改变状态

Air 完成后改变状态,air,flex4,state,flashbuilder4,Air,Flex4,State,Flashbuilder4,使用Flash Builder 4(带有4.1 flex)。 尝试在我的函数完成运行后创建一个状态更改,该更改将更改屏幕,使其具有一个“完成”按钮,该按钮将关闭应用程序。如何让air应用程序执行此操作? 我发现:受保护的函数setState(newState:String):对于AS3无效,但在Flex4上不起作用。完成文件数组后,它应将状态更改为“完成” private function initiate_download(event:MouseEvent):void

使用Flash Builder 4(带有4.1 flex)。 尝试在我的函数完成运行后创建一个状态更改,该更改将更改屏幕,使其具有一个“完成”按钮,该按钮将关闭应用程序。如何让air应用程序执行此操作?
我发现:受保护的函数setState(newState:String):对于AS3无效,但在Flex4上不起作用。完成文件数组后,它应将状态更改为“完成”

        private function initiate_download(event:MouseEvent):void
        {
            var filearray:Array = new Array();
            filearray[0]="00.jpg";
            filearray[1]="01.jpg";
            filearray[2]="02.jpg";
            for (var i:uint; i < filearray.length; i++) {
                var remoteURL = "http://domain/" + filearray[i];
                var localURL = "C:/dir/" + filearray[i];
                downloadFile(remoteURL, localURL);
            }


            function downloadFile(url, filename) {
                // Create the stream for the data request
                var urlStream = new URLStream();

                // Used to initiate request for remote file
                var request = new URLRequest(url);

                // Create file stream
                var fileStream = new FileStream();

                // Create a reference to a location on disk
                var file = File.desktopDirectory.resolvePath(filename);

                // Called as download progresses
                var writeFile = function()
                {
                    // Write to file
                    if (urlStream.bytesAvailable > 51200)
                    {
                        var dataBuffer = new ByteArray();
                        urlStream.readBytes(dataBuffer, 0, urlStream.bytesAvailable);
                        fileStream.writeBytes(dataBuffer, 0, dataBuffer.length);
                    }
                    return true;
                }

                // Called when download completes
                var finishWriteFile = function()
                {
                    // Write to file
                    if(urlStream.bytesAvailable > 0)
                    {
                        var dataBuffer = new ByteArray();
                        urlStream.readBytes(dataBuffer, 0, urlStream.bytesAvailable);
                        fileStream.writeBytes(dataBuffer, 0, dataBuffer.length);
                    }

                    // Close streams
                    fileStream.close();
                    urlStream.close();

                    return true;
                }

                // Initiate download
                fileStream.openAsync(file, FileMode.WRITE);
                urlStream.load(request);

                // Add event listeners
                urlStream.addEventListener(Event.COMPLETE, finishWriteFile);
                urlStream.addEventListener(ProgressEvent.PROGRESS, writeFile);
            }
    ]]>
</fx:Script>
<fx:Declarations>
    <!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<s:states>
    <s:State name="Start"/>
    <s:State name="Finished"/>
</s:states>
<mx:Image x="0" y="0" source="background.jpg"/>
<s:Button x="85" y="85" includeIn="Start" label="Update" id="download" click="initiate_download(event)" color="#FFFFFF" fontSize="30"/>
<s:Button x="131" y="85" includeIn="Finished" label="Finished" id="closer" click="close_window(event)" color="#FFFFFF" fontSize="30"/>
private function initiate\u下载(事件:MouseEvent):无效
{
var filearray:Array=new Array();
filearray[0]=“00.jpg”;
filearray[1]=“01.jpg”;
filearray[2]=“02.jpg”;
for(变量i:uint;i51200)
{
var dataBuffer=new ByteArray();
readBytes(dataBuffer,0,urlStream.bytesavable);
fileStream.writeBytes(dataBuffer,0,dataBuffer.length);
}
返回true;
}
//下载完成时调用
var finishWriteFile=函数()
{
//写入文件
如果(urlStream.bytesavable>0)
{
var dataBuffer=new ByteArray();
readBytes(dataBuffer,0,urlStream.bytesavable);
fileStream.writeBytes(dataBuffer,0,dataBuffer.length);
}
//合流
fileStream.close();
urlStream.close();
返回true;
}
//启动下载
openAsync(文件,FileMode.WRITE);
加载(请求);
//添加事件侦听器
urlStream.addEventListener(Event.COMPLETE,finishWriteFile);
urlStream.addEventListener(ProgressEvent.PROGRESS,writeFile);
}
]]>

关闭fileStream和URLSEAM后,您可以更改状态

this.currentState = "Finished"

现在应该可以看到“关闭”按钮。

谢谢,这完全正确!如果在流关闭后放置它,则在处理阵列的第一个部分后,它会发生更改。我必须使用大型电影文件对其进行测试。我将努力让它等到阵列结束后再进行更改。