1

AS3を使用して、名前/詳細を含むいくつかの画像(正確に10枚)をフラッシュファイルにロードしようとしています。

画像とその詳細はPHP経由で保存され、Flashで使用できるようにmysqlデータベースからの画像への詳細とパスを含むXMLファイルを作成するPHPファイルがあります。

これらの10枚の画像とその詳細をフラッシュファイルに表示する簡単な方法が必要です。

これは、ブラウザーで表示したときのXMLファイルの構造です。

<XML>
<Data>
<ID>127</ID>
<Name>Example 1</Name>
<Price>12!!</Price>
<Image>../inventory_images/127.jpg</Image>
<Date>Mar 08, 2013</Date>
</Data>

誰かがこれを手伝ってくれませんか?

私は本当に立ち往生しています。

前もって感謝します。

4

1 に答える 1

1

さて、これがあなたが望むことをするベアボーンクラスです:xmlのロード、それの解析、画像の次々のロード、画像の追加、情報テキストの追加:

package
{
    import flash.display.Loader;
    import flash.display.Sprite;
    import flash.events.Event;
    import flash.net.URLLoader;
    import flash.net.URLRequest;
    import flash.text.TextField;
    import flash.text.TextFieldAutoSize;

    public class LoadImagesFromXML extends Sprite
    {

        private var _xmlList:XMLList;
        private var _loadIndex:int;
        private var _baseURL:String = "http://example.com/";

        public function LoadImagesFromXML()
        {
            loadXML();
        }

        private function loadXML():void{
            var urlLoader:URLLoader = new URLLoader();
            urlLoader.addEventListener( Event.COMPLETE, onXMLComplete );
            urlLoader.load( new URLRequest( _baseURL + "myxmlurl/images.xml" ) );
        }

        private function onXMLComplete( e:Event ):void{
            var urlLoader:URLLoader = e.target as URLLoader;
            urlLoader.removeEventListener( Event.COMPLETE, onXMLComplete );
            var xml:XML = new XML( urlLoader.data );
            loadImages( xml );
        }

        private function loadImages( xml:XML ):void{
            _loadIndex = 0;
            _xmlList = xml.Data;
            loadSingleImage();
        }

        private function loadSingleImage():void{
            var imageData:XML = _xmlList[ _loadIndex ];
            var imageURL:String = imageData.Image.toString();
            var loader:Loader = new Loader();
            loader.contentLoaderInfo.addEventListener( Event.COMPLETE, onImageComplete );
            loader.load( new URLRequest( _baseURL + imageURL ) );
        }

        private function onImageComplete( e:Event ):void{
            var loader:Loader = e.target.loader as Loader;
            loader.y = height;
            loader.contentLoaderInfo.removeEventListener( Event.COMPLETE, onImageComplete );
            addChild( loader );
            var imageData:XML = _xmlList[ _loadIndex ];
            var imageName:String = imageData.Name.toString();
            var imagePrice:String = imageData.Price.toString();
            var imageDate:String = imageData.Date.toString();
            var tf:TextField = new TextField();
            tf.autoSize = TextFieldAutoSize.LEFT;
            tf.text = imageName + ", Price: " + imagePrice + ", Date: " + imageDate;
            tf.y = height;
            addChild( tf );
            _loadIndex++;
            if ( _loadIndex < _xmlList.length() ){
                loadSingleImage();
            }
        }

    }
}

xmlの構造は次のとおりです。

<?xml version="1.0" encoding="UTF-8" ?>
<images>
    <Data>
        <ID>127</ID>
        <Name>Example 1</Name>
        <Price>12!!</Price>
        <Image>image1.png</Image>
        <Date>Mar 08, 2013</Date>
    </Data>
    <Data>
        <ID>127</ID>
        <Name>Example 2</Name>
        <Price>10!!</Price>
        <Image>image2.png</Image>
        <Date>Mar 20, 2013</Date>
    </Data>
</images> 

このコードにはエラー処理がまったくないことに注意してください。ただし、画像が存在しない場合、URLが間違っている場合、またはセキュリティエラーが発生した場合に備えて、必ずいくつかを実装する必要があります…</ p>

于 2013-03-20T14:57:25.150 に答える