Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.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
选择要上载的图像后,如何在Flash datagrid中显示图像?_Flash_Actionscript 3_Image_Datagrid_Upload - Fatal编程技术网

选择要上载的图像后,如何在Flash datagrid中显示图像?

选择要上载的图像后,如何在Flash datagrid中显示图像?,flash,actionscript-3,image,datagrid,upload,Flash,Actionscript 3,Image,Datagrid,Upload,浏览图像并选择它们之后。如何在datagrid中显示图像预览?我能够显示文件名、文件大小,但无法显示图像。下面是我写的代码,请注意,这不是一个完整的代码,但足以让人理解。谢谢 // variables used var list:Array = new Array(); var listDP:Array = new Array(); var fileRefList:FileReferenceList; //dgMain is my DataGrid instance dgMain.addCol

浏览图像并选择它们之后。如何在datagrid中显示图像预览?我能够显示文件名、文件大小,但无法显示图像。下面是我写的代码,请注意,这不是一个完整的代码,但足以让人理解。谢谢

// variables used
var list:Array = new Array();
var listDP:Array = new Array();
var fileRefList:FileReferenceList;

//dgMain is my DataGrid instance
dgMain.addColumn("name");
dgMain.addColumn("size");

list = fileRefList.fileList; // List of files that user has selected

for(var i:Number = 0; i < list .length; i++) 
{
   list_dp.push({name:list[i].name, size:Math.round(list[i].size / 1000) + " kb"});
}

dgMain.dataProvider = new DataProvider(list_dp);
dgMain.spaceColumnsEqually();
//使用的变量
变量列表:数组=新数组();
var listDP:Array=new Array();
var fileRefList:FileReferenceList;
//dgMain是我的DataGrid实例
dgMain.addColumn(“名称”);
dgMain.addColumn(“尺寸”);
list=fileRefList.fileList;//用户选择的文件列表
for(变量i:Number=0;i
问得好。只需在听到
事件时加载每个图像。在
FileReferenceList
上选择
事件。然后为datagrid创建一个itemRenderer,它可以显示返回的ByteArray。下面是一个例子:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application
    xmlns:mx="http://www.adobe.com/2006/mxml"
    creationComplete="creationCompleteHandler()">


    <mx:Script>
        <![CDATA[
            import mx.collections.ArrayCollection;

            // variables used
            var list:Array;
            var files:ArrayCollection = new ArrayCollection();
            var fileReferenceList:FileReferenceList = new FileReferenceList();

            protected function creationCompleteHandler():void
            {
                fileReferenceList.addEventListener(Event.SELECT, selectHandler);
            }

            protected function selectHandler(event:Event):void
            {
                load();
            }

            protected function completeHandler(event:Event):void
            {
                var fileReference:FileReference = event.target as FileReference;
                var token:Object = {name:fileReference.name, size:Math.round(fileReference.size / 1000) + " kb", preview:fileReference.data};
                files.addItem(token);
            }

            public function load():void
            {
                list = fileReferenceList.fileList; // List of files that user has selected
                var i:int = 0;
                var n:int = list.length
                for(i; i < n; i++) 
                {
                    list[i].addEventListener(Event.COMPLETE, completeHandler);
                    list[i].load();
                }
            }

        ]]>
    </mx:Script>

    <mx:Button label="browse" click="fileReferenceList.browse()"/>

    <mx:DataGrid id="dgMain"
        dataProvider="{files}"
        horizontalScrollPolicy="on"
        allowMultipleSelection="true" rowHeight="25">
        <mx:columns>
            <mx:DataGridColumn dataField="preview" headerText="preview">
                <mx:itemRenderer>
                    <mx:Component>
                        <mx:Canvas verticalCenter="0" horizontalScrollPolicy="off" verticalScrollPolicy="off">
                            <mx:Image source="{data.preview}" width="20" height="20"/>
                        </mx:Canvas>
                    </mx:Component>
                </mx:itemRenderer>
            </mx:DataGridColumn>
            <mx:DataGridColumn dataField="name" headerText="Name" />
            <mx:DataGridColumn dataField="size" headerText="Size" />
        </mx:columns>
    </mx:DataGrid>
</mx:Application>

如果这解决了问题,请将其标记为正确:)

最好的,
兰斯问得好。只需在听到
事件时加载每个图像。在
FileReferenceList
上选择
事件。然后为datagrid创建一个itemRenderer,它可以显示返回的ByteArray。下面是一个例子:

<?xml version="1.0" encoding="utf-8"?>
<mx:Application
    xmlns:mx="http://www.adobe.com/2006/mxml"
    creationComplete="creationCompleteHandler()">


    <mx:Script>
        <![CDATA[
            import mx.collections.ArrayCollection;

            // variables used
            var list:Array;
            var files:ArrayCollection = new ArrayCollection();
            var fileReferenceList:FileReferenceList = new FileReferenceList();

            protected function creationCompleteHandler():void
            {
                fileReferenceList.addEventListener(Event.SELECT, selectHandler);
            }

            protected function selectHandler(event:Event):void
            {
                load();
            }

            protected function completeHandler(event:Event):void
            {
                var fileReference:FileReference = event.target as FileReference;
                var token:Object = {name:fileReference.name, size:Math.round(fileReference.size / 1000) + " kb", preview:fileReference.data};
                files.addItem(token);
            }

            public function load():void
            {
                list = fileReferenceList.fileList; // List of files that user has selected
                var i:int = 0;
                var n:int = list.length
                for(i; i < n; i++) 
                {
                    list[i].addEventListener(Event.COMPLETE, completeHandler);
                    list[i].load();
                }
            }

        ]]>
    </mx:Script>

    <mx:Button label="browse" click="fileReferenceList.browse()"/>

    <mx:DataGrid id="dgMain"
        dataProvider="{files}"
        horizontalScrollPolicy="on"
        allowMultipleSelection="true" rowHeight="25">
        <mx:columns>
            <mx:DataGridColumn dataField="preview" headerText="preview">
                <mx:itemRenderer>
                    <mx:Component>
                        <mx:Canvas verticalCenter="0" horizontalScrollPolicy="off" verticalScrollPolicy="off">
                            <mx:Image source="{data.preview}" width="20" height="20"/>
                        </mx:Canvas>
                    </mx:Component>
                </mx:itemRenderer>
            </mx:DataGridColumn>
            <mx:DataGridColumn dataField="name" headerText="Name" />
            <mx:DataGridColumn dataField="size" headerText="Size" />
        </mx:columns>
    </mx:DataGrid>
</mx:Application>

如果这解决了问题,请将其标记为正确:)

最好的,
兰斯

你好,兰斯,谢谢你的回复。由于我对Flash非常陌生,并且没有Flex软件,上述代码是否适用于Flex?我也能为Flash做同样的事情吗?如果是这样的话,我该如何在我的Flash数据网格中使用与itemRenderer等价的东西呢。目前,我已经有了一个DataGrid组件。谢谢嘿,我从来没有使用过Flash,所以我不确定Flash中datagrid的细节。但是completeHandler和load方法中FileReferenceList的代码应该可以。如果你试过,请告诉我。嗨,兰斯,我设法获得了Flex并尝试了你的代码。但是,我在var标记行中遇到了一个错误:Object={name:fileRef.name,size:Math.round(fileRef.size/1000)+“kb”,preview:fileRef.data};我的错误是“通过静态类型为flash.net:FileReference的引用访问可能未定义的属性数据”。我目前使用的是Flash版本10.0.2.54。我通过更新Flex SDK解决了这个问题。谢谢我没有足够的声誉,所以我无法将你的答案标记为正确,我对stackoverflow很陌生。很高兴听到!你需要多少声誉才能将答案标记为正确?嗨,兰斯,谢谢你的回复。由于我对Flash非常陌生,并且没有Flex软件,上述代码是否适用于Flex?我也能为Flash做同样的事情吗?如果是这样的话,我该如何在我的Flash数据网格中使用与itemRenderer等价的东西呢。目前,我已经有了一个DataGrid组件。谢谢嘿,我从来没有使用过Flash,所以我不确定Flash中datagrid的细节。但是completeHandler和load方法中FileReferenceList的代码应该可以。如果你试过,请告诉我。嗨,兰斯,我设法获得了Flex并尝试了你的代码。但是,我在var标记行中遇到了一个错误:Object={name:fileRef.name,size:Math.round(fileRef.size/1000)+“kb”,preview:fileRef.data};我的错误是“通过静态类型为flash.net:FileReference的引用访问可能未定义的属性数据”。我目前使用的是Flash版本10.0.2.54。我通过更新Flex SDK解决了这个问题。谢谢我没有足够的声誉,所以我无法将你的答案标记为正确,我对stackoverflow很陌生。很高兴听到!你需要多少声誉才能将答案标记为正确?