カテゴリー : XML

2/21 画像ファイルの読み込み

今までの復習をかねて、今後実践でも使うことができると思われるXML,XPath,外部からのファイルの呼び出しを中心に勉強をしています。

外部の画像ファイルの呼び出し。

外部の画像ファイルを表示するためコードです。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
package
{
    import flash.display.Sprite;
    import flash.display.Loader;
    import flash.net.URLRequest;

    public class newLoader extends Sprite
    {
        var urlList:Array = new Array();
        var loaderList:Array = new Array();

        public function newLoader() {
            urlList[0] = "image/IMG_1761.jpg";
            urlList[1] = "image/IMG_1770.jpg";
            urlList[2] = "image/IMG_1779.jpg";

            for (var i = 0; i < urlList.length; i++) {
                var x:int;
                loaderList[i] = new Loader();
                addChild(loaderList[i]);
                loaderList[i].load(new URLRequest(urlList[i]));
                loaderList[i].x = i*150;
                loaderList[i].y = i*50;
                loaderList[i].scaleX =0.1;
                loaderList[i].scaleY =0.1;
            }
        }
    }
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
package{
   
    import flash.display.Sprite;
    import flash.display.Loader;
    import flash.net.URLRequest;
   
    public class imgLoader extends Sprite{
       
        var imgloader:Loader = new Loader;
       
        public function  imgLoader(){
             addChild(imgloader);
            imgloader.load(new URLRequest("image/IMG_1790.jpg"));
                                                               
           
        }
    }
}

外部からXMLデータを取得

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
package{
   
    import flash.display.Sprite;
    import flash.net.URLRequest;
    import flash.net.URLLoader;
    import flash.events.Event;
   
    public class imgLoader extends Sprite{
       
        var pathxml:String = "test.xml";
        var url_loader:URLLoader;
       
        var name_list:Array = new Array();
        var path_list:Array = new Array();
       
       
        public function  imgLoader(){
             
             url_loader = new URLLoader(new URLRequest(pathxml));
             
             url_loader.addEventListener(Event.COMPLETE,onload);
             
           
        }
       
         public function onload(event:Event):void{
           
            var xml:XML = new XML(url_loader.data);
           
            for each(var xmlObj:Object in xml.img){
               
                name_list.push(xmlObj.text());
                path_list.push(xmlObj.@src);
            }
           
            for(var i:int =0 ; i < name_list.length;i++){
               
                trace(name_list[i]);
                trace(path_list[i]);
            }
        }
    }
}

サムネイルとは、多数の画像を一覧表示するために縮小された画像。

1
2
3
4
5
6
7
8
9
10
for(var i:uint = 0; i< img_list.length;i++){
           
    thum.push(new Sprite());
    var thumLoader:Loader = new Loader();
  順番に画像をSpriteオブジェクトに入れている。
    thumLoader.load(new URLRequest(thum_list[i]));
    thum[i].addChild(thumLoader);
    thum[i].name = String(i);
    thumLoader.contentLoaderInfo.addEventListener(Event.COMPLETE,onthumImgLoadComp);
            }

• サムネイルの中にSpriteオブジェクトを作成します。
 スプライトは、表示するイメージと表示する位置をもつオブジェクトです。
• このSpriteオブジェクトの中に、xmlから取り出したjpgのイメージを当てはめます。
• contentLoaderInfo.addEventListenerについては高記載があります。
外部イメージ(SWFも含む)の読み込み完了したことを知るためには、contentLoaderInfo プロパティの complete イベントを監視すればよい。ロードされたデータのダウンロードが完了された場合に送出されるイベントです。

1
2
3
4
5
6
7
8
9
10
11
function onthumImgLoadComp(event:Event):void{
           
            var imgNum:int = int(event.target.loader.parent.name);
           
            event.target.loader.x = (event.target.width + _thumInterval)*(imgNum % _thumNum);
            event.target.loader.y = (event.target.height + _thumInterval)*(int(imgNum / _thumNum));
            thumContainer.addChild(event.target.loader);
           
            event.target.loader.name = imgNum;
            event.target.loader.addEventListener(MouseEvent.CLICK,onClick);
        }

読み込んだ画像の処理を記載されています。
とりだした画像を画面にどう貼付けるかが載ってます。

(event.target.width + _thumInterval)*(imgNum % _thumNum);
画像の幅に画像間の間隔を足したものに画像の番号を画像を並べる数の剰余をかけている。
「x % y」は x を y で割った余りを表す。

1
2
3
4
5
6
7
8
9
function imgloadComp(event:Event):void{
           
    while(imgContainer.numChildren > 0){
               
    imgContainer.removeChildAt(0);
    }
           
  imgContainer.addChild(event.target.loader);
}

numChildren
指定したオブジェクト内にいくつのオブジェクトを保有しているかを調べるプロパティです。

removeChildAt(0);
任意の階層にあるオブジェクトを削除する場合に利用されます。
今回はクリックするごとに画像がかわるので、削除する画像を直接指定するのではなくインデックス(階層0)を指定している。これでimgContainer の任意の画像を削除している。

2/4 Wonderfl本サンプル Flickrの画像を表示

Flickrの画像を表示

前回のtwitterのサンプルに引き続きFlickrの画像を表示する「Wonderfl本」のサンプルを勉強していきます。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public function Main() {
          var myLoader:Loader = new Loader();
           var myURLRequest:URLRequest = new URLRequest("http://farm4.static.flickr.com/3467/3828917519_d209a026fb_o.jpg");
            //LoaderContextを使うと、drawできるようになる。ただしcrossdomain.xmlで許可されている場合のみ
           //これ→http://farm4.static.flickr.com/crossdomain.xml
           var myLoaderContext:LoaderContext = new LoaderContext(true);
            myLoader.load(myURLRequest , myLoaderContext);
            myLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onComplete);
            //Loaderごとステージに置く例
            addChild(myLoader);
           
             //ステージ上のオブジェクト全てにフィルターをかける
            filters = [new DropShadowFilter()];
             
             //flickr上の画像のページへのリンク
            addEventListener(MouseEvent.CLICK, CLICK);
         }
1
2
3
4
5
6
7
<?xml version="1.0"?>
<!DOCTYPE cross-domain-policy SYSTEM "http://www.macromedia.com/xml/dtds/cross-domain-policy.dtd">
<cross-domain-policy>
  // どのドメインでもアクセスを許可すると記載があります。
  <allow-access-from domain="*" />
 <site-control permitted-cross-domain-policies="master-only" />
</cross-domain-policy>

まずはお馴染み「URLLoader」「URLRequest」を使い画像を読み込んでいます。
今回はすでにcrossdomain.xmlでアクセス許可が出ていることがわかっているので、LoaderContext()だけで大丈夫。

1
2
3
4
5
6
7
8
9
10
11
12
private function onComplete(e:Event):void {
            //new LoaderContext(true)にしているのでbitmap化して変形できる
            var myBitmap:Bitmap = e.target.content;
            var myBitmapData:BitmapData = new BitmapData(myBitmap.width, myBitmap.height);
            myBitmapData.draw(myBitmap);
            var mySprite:Sprite = new Sprite();
            mySprite.graphics.beginBitmapFill(myBitmapData);
            mySprite.graphics.drawRoundRect(210, 210 , 240, 240, 100, 100);
            mySprite.graphics.drawCircle(330, 330, 90);
            mySprite.graphics.drawCircle(330, 330, 70);
            addChild(mySprite);
}

Bitmapデータに変換して表示していて画面上に設置している。

1
drawRoundRect(int x, int y, int width, int height,int arcWidth, int arcHeight)

角の丸い図形を描くdrawRoundRect();
通常の四角はdrawRect();

1
2
3
4
filters = [new DropShadowFilter()];

//DropShadowFilter()のデフォルト値
DropShadowFilter(distance:Number = 4.0, angle:Number = 45, color:uint = 0, alpha:Number = 1.0, blurX:Number = 4.0, blurY:Number = 4.0, strength:Number = 1.0, quality:int = 1, inner:Boolean = false, knockout:Boolean = false, hideObject:Boolean = false)

DropShadowFilter() クラスはドロップシャドウを付け加えるメソッドです。
何も引数をしていしていないので、デフォルト値が設定されています。

今回の例ではステージ全体にドロップシャドウをかけています。

参考文献

2/3 Wonderfl本サンプル(Twitterの検索 )

Twitterの検索

「yahoo pipes」のドキュメントなど見てますが、全然使い方がわからないので、Wonderfl本のサンプルを勉強したいです。
今回は「TwitterAPI」を使ったプログラム。語句を検索して結果を表示するシンプルなものです。

KeyCode定数
サンプルでは、

1
2
if (e.keyCode == 13) {
                serch(e.currentTarget.text);}

keyCodeの13番はEnterキーを表しているので、13が押された場合serch()が開始されます。

1
2
3
4
5
6
7
var myURLLoader:URLLoader = new URLLoader();
        myURLLoader.addEventListener(Event.COMPLETE,onCompleteXML);
        myURLLoader.addEventListener(IOErrorEvent.IO_ERROR,onIoError);
            var xmlURL:String = "http://search.twitter.com/search.atom?q=";
            //encodeURIComponent()を使うことによって、#や日本語にも対応
            xmlURL += encodeURIComponent(serchWord);       
            myURLLoader.load(new URLRequest(xmlURL));

ここはお馴染み「URLLoader」「URLRequest」を使ってます。
ここで初めて出てくる「encodeURIComponent()」はAjaxで送信した日本語文字(~など)が,サーバ側で文字化けする場合への対処しています。
encodeURIComponent()

  • ページのエンコーディングからUTF-8への変換
  •     

  • その変換結果の,URLエンコーディング

の両方を行ってくれるみたいです。ただ難しそうですので今後もう少し勉強が必要かも。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
       //○ 先ほどURLLoaderで読み込んだデータをXML型にキャスト
            var myXML:XML = new XML(e.currentTarget.data);
            //namespaceを設定
            default xml namespace = new Namespace("http://www.w3.org/2005/Atom");
           
            //ヘッダーの下、下記に記載のxmlデータの配置の際に利用します。
            var tfY:int = 0;
            //要素を取り出して、textFieldを作りならべる
            var itemLength:int = myXML.entry.length(); // xmlの<entry>タグが何個あるか調べて、その数をitemLengthにおさめている。
           
            for (var i:int = 0; i < itemLength; i++) {
                //xmlからlink,authorName,titleの各値を取得
                var link:String = myXML.entry[i].link[0].@href; // @はアトリビュート
                var authorName:String = myXML.entry[i].author.name;
                var title:String = myXML.entry[i].title;
                //アイコン画像のURLを取得
                var imgURL:String = myXML.entry[i].link[1].@href;
                //bmpフォーマットのアイコン画像を使っている人も少なくないため、Flashで使えるファイルの拡張子かどうかを判別      
                                // substr()は文字を抜き出すメソッド。-4をしていしてるのは後ろから4文字抜き出している意味すなわち、.jpg .gif  .png などの拡張子を抜き出している。
                var extention:String = imgURL.substr( -4);
                                //  toLowerCase()  文字列を全部小文字にします。
                extention = extention.toLowerCase();
                if (extention != ".jpg" && extention != ".gif" && extention != ".png") {
                    //Flashで使える画像の拡張子ではなかった場合にはデフォルトアイコンを指定
                    imgURL = "http://s.twimg.com/a/1254440757/images/default_profile_mini.png";
                }
                //画像のファイル名が日本語などの規定外の文字である場合を考慮しエンコードする
                imgURL = encodeURI(imgURL);    
                //小さい画像で十分なので、名前を差し替える
                imgURL = imgURL.replace(/_normal\./, "_mini\.");

参照にしている「http://search.twitter.com/search.atom?q=wonderfl」の中身を抜粋

1
2
3
4
5
6
7
8
9
10
11
<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns:google="http://base.google.com/ns/1.0" xml:lang="en-US" xmlns:openSearch="http://a9.com/-/spec/opensearch/1.1/" xmlns="http://www.w3.org/2005/Atom" xmlns:twitter="http://api.twitter.com/">
  <entry>
    <link type="text/html" href="http://twitter.com/k_nanba/statuses/8587144870" rel="alternate"/>
    <title>&#26089;&#12356;&#12392;&#12371;wonderfl&#36914;&#20986;&#12375;&#12383;&#12356;&#12290;</title>
    <author>
      <name>k_nanba (Nanba Koji)</name>
      <uri>http://twitter.com/k_nanba</uri>
    </author>
</entry>
  <entry>

まずはnamespaceを設定している。
xmlのデータの中に「xmlns」とすでにnamespaceの場所がしていされているのでそこに記載のある「http://www.w3.org/2005/Atom」を参照する。

1
2
var extention:String = imgURL.substr( -4);
extention = extention.toLowerCase();

imgURL.substr( -4); アイコンの拡張子を抜き出している。終わりから4つの文字を抜き出している。subster()は文字を抜き出す際のメソッド。
toLowerCase(): 文字列を全部小文字にします


encodeURI

エスケープシーケンス:コンピュータシステムにおいて、通常の文字コードでは表せない特殊な文字や機能を表すための一連のバイト列。
エンコード:一定の規則に基づいて符号化すること。データの圧縮や暗号化などがこれにあたる

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
var htmldata:String = "";
                htmldata = "<a href='" + link + "' target='_blank'>";
                htmldata += "<img src='" + imgURL + "' width='24' height='24' />";
                htmldata += "<b>" + authorName + "</b> " + title + "</a>";
               
                //検索結果のテキストフィールド
                var myTextField:TextField = new TextField();
                myTextField.width = 460;
                myTextField.x = 2;
                myTextField.wordWrap = true;
                myTextField.background = true;
                myTextField.backgroundColor = 0xFFFFFF;
                myTextField.border = true;
                myTextField.borderColor = 0x39CCFF;
                myTextField.htmlText = htmldata;
                myTextField.autoSize = "left";
                //テキストフィールドのy座標はtfYに加算していくことにより、決定
                myTextField.y = tfY;
                tfY += myTextField.height + 3;
                _resultStage.addChild(myTextField);
            }

最後にxmlデータから抜き出した情報を画面に配置していきます。

参考文献

1/30 外部APIとの接続(yahoo pipes)

Yahoo pipse

先ほどの異なるドメインからアクセスをするためはcrossdomain.xml,LoaderContentを使いましたが、直接アクセスするのではなく「Yahoo Pipes」のような外部サイトを経由することでアクセス制限を回避できます。

Yahoo PipesはRSSを編集して再配信するためのサービスです。Flashで利用する際に非常に使いやすいとのこと。
詳しい使い方はこのサイトで詳しく出ています。

wonderfl本に載っているサンプルを例に勉強していきます。

1
2
3
4
5
6
7
            var myURLLoader:URLLoader = new URLLoader();
       myURLLoader.addEventListener (Event.COMPLETE, onCompleteXML);
            //YahooPipesの汎用feedProxy
            var xmlURL:String = "http://pipes.yahooapis.com/pipes/pipe.run?_id=f4f6c98189a88373b9bfd4fe6128c018&_render=rss&url=";
            //encodeURIComponentでエスケープして、feedProxyにくっつける。
            xmlURL += encodeURIComponent("http://www.amazon.co.jp/rss/bestsellers/books/713428/ref=pd_ts_rss_link");
            myURLLoader.load(new URLRequest(xmlURL)); 

通常と同じように、URLLoaderでURLRequestで指定したXMLデータを読み込んでいます。

参考文献

1/30 外部APIとの接続(XML)

外部APIとの接続。

今回は「ブラウザで始めるActionScript」に乗っている外部APIとの接続を勉強します。
今まで勉強してきたXMLが必要となります。

まずはXMLの読み込みからです。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
</p>
<p>public class Main extends Sprite {<br>
        public function Main() {<br>
            //検索結果のロード<br>
            var myURLLoader:URLLoader = new URLLoader();<br>
       // 読み込みが完了したら、onCompleteXML関数を呼び出す。<br>
            myURLLoader.addEventListener(Event.COMPLETE, onCompleteXML);<br>
       //どのデータを読み込むかを指定<br>
            var xmlURL:String = "http://photos.googleapis.com/data/feed/base/all?alt=rss&amp;kind=photo&amp;q=waterdrop&amp;imglic=commercial&amp;max-results=3&amp;imgmax=288";<br>
            //crossdomain.xml(クロスドメインポリシーファイル)の位置を指定<br>
            Security.loadPolicyFile("http://photos.googleapis.com/data/crossdomain.xml");<br>
       // 指定されたXMLデータを読み込む。<br>
            myURLLoader.load(new URLRequest(xmlURL));<br>
        }</p>
<p>

この読み込みでややこしいのは、クロスドメインについてです。
同じURLからだと問題はないのですが、別のドメインから呼び出す際にはcrossdomain.xmlを使わないといけません。
下記の部分で、アクセスできるかどうかを確認しています。

1
2
3
<br>
Security.loadPolicyFile("http://photos.googleapis.com/data/crossdomain.xml");<br>
// 今回の例では"http://photos.googleapis.com/data/crossdomain.xml"で読み込みができるかどうかを管理しています。<br>

“http://photos.googleapis.com/data/crossdomain.xml”には具体的には大体このように書かれています。

1
2
3
4
5
6
7
8
9
10
</p>
<p><br>
<!-- http://photos.googleapis.com/data/crossdomain.xml --><br>
<br>
<cross-domain-policy><br>
 //すべてのドメインからアクセスを許可しますと記載されている。<br>
  <allow-access-from domain="*"><br>
  <allow-http-request-headers-from domain="*" headers="Authorization,X-HTTP-Method-Override"><br>
</allow-http-request-headers-from></allow-access-from></cross-domain-policy></p>
<p>

[*]と記載があるので、すべてのドメインからアクセスできます。
もしとあれば albatrus.comからのアクセスのみを許可するという意味になりその他のサイトからはアクセスできません。

例外として、crossdomain.xmlがドキュメントルート(googleapis.com/ ここ )にありアクセス許可を与えている場合は、Security.loadPolicyFileが不要になります。今回の場合はの記載がドキュメントルートにないので使えません。

XMLの解析

XMLクラスを使って、読み込んだデータを解析します。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
</p>
<p>private function onCompleteXML(e:Event):void {<br>
           //取得したデータをXML型にする。<br>
            var myXML:XML = new XML(e.currentTarget.data);  // xmlURLで読み込んだデータを「e.currentTarget.data」で表している。    </p>
<p>             //背景のグレーの文字。XMLの文字列を流し込んでいる。<br>
             var tf:TextField = new TextField();<br>
             tf.text = myXML;<br>
             tf.textColor = 0xCCCCCC;<br>
             tf.wordWrap = true;<br>
             tf.width = tf.height = 465;<br>
             addChild(tf);</p>
<p>             //XMLを解析<br>
             var titleStr:String = myXML.channel.item[0].title;      //<channel>タグの中の1番上の<item>タグの<title>をtitleStrに納めている。&lt;br /&gt;
             var linkURL:String = myXML.channel.item[0].link;&lt;br /&gt;
             //namespaceを設定&lt;br /&gt;
            default xml namespace = new Namespace("http://search.yahoo.com/mrss/");  &lt;/p&gt;
&lt;p&gt;            var creditStr:String = myXML.channel.item[0].group.credit;&lt;br /&gt;
    //@はアトリビュート。contentの中にはurl,type,heightなどが分かれているのでそのどれを使うかを@で指定する。&lt;br /&gt;
             var imgURL:String = myXML.channel.item[0].group.content.@url;      &lt;/p&gt;
&lt;p&gt;             //タイトル、クレジット、リンクのテキストを入れて、ドロップシャドウをかける&lt;br /&gt;
            var htmldata:String = "Title:" + titleStr + "&lt;br&gt;";&lt;br /&gt;
             htmldata += "Credit:" + creditStr + "&lt;br&gt;";&lt;br /&gt;
             htmldata += "&lt;a href="" + linkURL + "" mce_href="" + linkURL + ""&gt;" + linkURL + "&lt;/a&gt;";&lt;br /&gt;
            var fld:TextField = new TextField();&lt;br /&gt;
             fld.autoSize = TextFieldAutoSize.LEFT;&lt;br /&gt;
             fld.width = 300;&lt;br /&gt;
             fld.x = 50;&lt;br /&gt;
             fld.y = 50;&lt;br /&gt;
            fld.multiline = true;&lt;br /&gt;
             fld.htmlText = htmldata;&lt;br /&gt;
             var dsf:DropShadowFilter = new DropShadowFilter();&lt;br /&gt;
            dsf.alpha = 0.6;&lt;br /&gt;
             fld.filters = [dsf];&lt;br /&gt;
             addChild(fld);&lt;/p&gt;
&lt;p&gt;             //画像のロード Loaderクラスは画像やSWFを読み込むクラスです。&lt;br /&gt;
             var myLoader:Loader = new Loader();&lt;br /&gt;
    // XMLから取り出した画像ファイルを呼び出す&lt;br /&gt;
            var myURLRequest:URLRequest = new URLRequest(imgURL);&lt;br /&gt;
             //クロスドメインポリシーファイルをドキュメントルートから取得,説明は下記に記載&lt;br /&gt;
             var myLoaderContext:LoaderContext = new LoaderContext(true);&lt;br /&gt;
             myLoader.load(myURLRequest, myLoaderContext);&lt;br /&gt;
             myLoader.contentLoaderInfo.addEventListener(Event.COMPLETE, onCompleteImg);&lt;br /&gt;
         }&lt;br /&gt;

</p>
<p>読み込んだXMLデータはこちら。(非常に長いので一部だけ)<br />

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
&lt;br /&gt;
&lt;?xml version='1.0' encoding='UTF-8'?&gt;&lt;rss xmlns:atom='http://www.w3.org/2005/Atom' xmlns:gphoto='http://schemas.google.com/photos/2007' xmlns:media='http://search.yahoo.com/mrss/' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' version='2.0'&gt;&lt;br /&gt;
&lt;channel&gt;&lt;br /&gt;
     &lt;item&gt;&lt;br /&gt;
        &lt;title&gt;ポーチュラカ、ハナスベリヒユ</title></item></channel></p><p>
<link>http://picasaweb.google.com/buku2photo/Plants01#5360230958045632610
        <author>buku2photo (ブクブクあわだつ)</author><br>
         <media:group><br>
                <media:content url="http://lh4.ggpht.com/_8NULqSwdYxI/SmNdqBhcmGI/AAAAAAAADqM/FGcIdf8qtXI /s288/031013CIMG0646.jpg" height="216" width="288" type="image/jpeg" medium="image"><br>
                <media:credit>ブクブクあわだつ</media:credit><br>
                <media:keywords>スベリヒユ科, 自宅, Portulaca, Water drop</media:keywords><br>
          </media:content><br>
          <gphoto:albumtitle>Plants 植物 01</gphoto:albumtitle><br>
          <gphoto:albumctitle>Plants01</gphoto:albumctitle><br>
          <gphoto:albumdesc>2001年~2005年</gphoto:albumdesc><br>
     </media:group></p><p></p>
<p>

namespace

namespaceはこちらで任意の空間を設定できます。例えば同じ変数、メソッドがあってもnamespaceで分けておけば使うことが可能になります。
今回の例ではに中にある,などを取り出す際に利用しています。
今回はdefaltでnamespaceを指定してます。
これだと自動的にの中から読み込むことになってしまいますので、の中のものは使えません。

その場合は個別に指定します。

1
2
3
4
<br>
var nsGphoto:Namedpace = new Namespace("http://schemas.google.com/photos/2007");<br>
var gphototitle:String = myXML.channel.item[0].nsGphote::albumtitle;</p>
<p>

このように、複数のnamespaceを読みこんだ方が適切な場合もあります。

LoaderContext

先ほど画像を呼び出す際にLoaderContextを使いました。

1
2
3
4
<br>
    var myLoaderContext:LoaderContext = new LoaderContext(true);<br>
             myLoader.load(myURLRequest, myLoaderContext);</p>
<p>

これは先ほど画像を読み込んだurlがcrossdomain.xmlと同じドメインにないので、アクセスしても良いかどうか確認しています。
   画像のurl

  • http://lh4.ggpht.com/_8NULqSwdYxI/SmNdqBhcmGI/AAAAAAAADqM/FGcIdf8qtXI /s288/031013CIMG0646.jpg
  • 先ほどアクセス許可をもらっているurl

  • http://photos.googleapis.com/data/crossdomain.xml
  • [注意点]
    今回は呼び出した画像をBitmapに変更しているのでこのようなアクセス許可を確認しているのですが、特に加工をせず表示するのなら特に許可を確認する必要はありません。

    • テキスト:crossdomain.xmlの許可が必須
    • 画像:crossdomain.xmlの許可が不要なこともある

    今回参考のサンプル

    参考文献