Shift-JISのXMLを読み込む
第一回東京ひよこの会
6/1に東京ひよこの会の第一回ミーティングに行ってきました。
XMLの名前空間を指定解除する場合の注意点
//名前空間を抽出・保存(接頭辞で指定)
for (var i:int = 0; i<doc_xml.namespaceDeclarations().length; i++) {
switch (doc_xml.namespaceDeclarations()[i].prefix) {
case “” :
var ns_def:Namespace = new Namespace(doc_xml.namespace(doc_xml.namespaceDeclarations()[i].prefix));
break;
case “dc” :
var dc:Namespace = new Namespace(doc_xml.namespace(doc_xml.namespaceDeclarations()[i].prefix));
break;
case “rdf” :
var rdf:Namespace = new Namespace(doc_xml.namespace(doc_xml.namespaceDeclarations()[i].prefix));
break;
}
}//名前空間のデフォルト値を設定
default xml namespace = ns_def;
//(XMLの処理)
//名前空間のデフォルト値を設定解除(ここはundefinedで。nullは不可)
default xml namespace = undefined;
テキストノードがない場合の戻り値
xmlで引っかかった点。
var test_xml:XML =
<itemlist>
<msg>おはよう</msg>
<msg></msg>
<msg>こんにちは</msg>
<msg />
<msg>おやすみ</msg>
</itemlist>;for each(var item:XML in test_xml.msg) {
trace(“text=”+item.text(),(item.text() == “”),(item.text() == null),(item.text() == undefined))
}
——出力結果
text=おはよう false false false
text= false false true
text=こんにちは false false false
text= false false true
text=おやすみ false false false
BitmapData.draw()とクロスドメイン
・別ドメインの画像を読み込むだけなら、ポリシーファイルがなくても問題なし。
・別ドメインの画像を読み込んでデータの操作をする場合は、ポリシーファイルが必要。
読み込んだビットマップイメージを source として使用する場合も制限があります。読み込んだイメージが呼び出し元と同じドメインからのものの場合、draw() メソッドの呼び出しは成功します。また、イメージのサーバーのクロスドメインポリシーファイルで、draw() メソッドを呼び出す SWF コンテンツのドメインに許可を付与できます。この場合、LoaderContext オブジェクトの checkPolicyFile プロパティを設定し、このオブジェクトを context パラメータとして、イメージの読み込みに使用する Loader オブジェクトの load() メソッドを呼び出すときに使用する必要があります。これらの制限は、アプリケーションセキュリティサンドボックス内の AIR コンテンツには適用されません。
動的生成したオブジェクトはインスタンス名で参照できない
var target_mc:MovieClip = new MovieClip();
this.addChild(target_mc)var img_mc_on:MovieClip = new MovieClip();
var img_mc_off:MovieClip = new MovieClip();target_mc.addChild(img_mc_on);
target_mc.addChild(img_mc_off);
trace(“target_mc.img_mc_off”,target_mc.img_mc_off,target_mc.img_mc_off.name)
TypeError: Error #1010: 条件は未定義であり、プロパティがありません。
var target_mc:MovieClip = new MovieClip();
this.addChild(target_mc)var img_mc_on:MovieClip = new MovieClip();
var img_mc_off:MovieClip = new MovieClip();img_mc_on.name = “img_mc_on”;
img_mc_off.name = “img_mc_off”;target_mc.addChild(img_mc_on);
target_mc.addChild(img_mc_off);trace(“target_mc.img_mc_off”,target_mc.img_mc_off,target_mc.img_mc_off.name)
var target_mc:MovieClip = new MovieClip();
this.addChild(target_mc)var img_mc_on:MovieClip = new MovieClip();
var img_mc_off:MovieClip = new MovieClip();img_mc_on.name = “img_mc_on”;
img_mc_off.name = “img_mc_off”;target_mc.addChild(img_mc_on);
target_mc.addChild(img_mc_off);//これが重要!!!
//動的に生成したインスタンスは、インスタンス名で参照できないので
//addChildしたオブジェクトのプロパティにインスタンス本体を入れておく。
target_mc[“img_mc_on”] = img_mc_on;
target_mc[“img_mc_off”] = img_mc_off;trace(“target_mc.img_mc_off”,target_mc.img_mc_off,target_mc.img_mc_off.name)
target_mc.img_mc_off [object MovieClip] img_mc_off
target_mc.img_mc_off [object MovieClip] instance3
swf全体でのサウンド制御
var sd_song:Sound;
var sd_channel:SoundChannel;function xInitSound_song():void {
sd_song = new Sound();
var url:String = “mp3/” + “Pissism-Blade.mp3”;
var urlReq:URLRequest = new URLRequest(url);sd_song.addEventListener(Event.COMPLETE,onCompleteSound_load);
sd_song.load(urlReq);
}function onCompleteSound_load(evt:Event):void {
trace(“—ロード完了”,evt.target);
}function xStartSound_song(evt:MouseEvent):void {
sd_channel = sd_song.play();
}xInitSound_song();
btn_play.addEventListener(MouseEvent.CLICK,xStartSound_song);
function xVolume0_song(evt:MouseEvent):void {
var st:SoundTransform = sd_channel.soundTransform
st.volume = 0
sd_channel.soundTransform = st
}
function xVolume0_song(evt:MouseEvent):void {
var st:SoundTransform = SoundMixer.soundTransform;
st.volume = 0;
SoundMixer.soundTransform = st;
}
カンタンに固定IPでテスト
クライアントによってはIP制限をかけているため、テストサーバに固定IPでアクセスしなければいけない場合がある。そこで仕事仲間のSくんから教えてもらったのがコレ。
AS3.0でWebServiceを使う
AS3.0にはFlash Remotingも見つからないし、必要に迫られて探してみたら見つかりました。Flex SDKのライブラリとSWCにパスを通して、FlashCS4でFlex Webservice componentを使えるようにしてやればいいようです。これでmx.*クラスが使えます。関連リンクを備忘録として記します。
- Flash Authoring: Using Flex Webservice component in Flash CS4
- ADC Presents - Use the Flex webservice component in Flash on Adobe TV
- Video tutorial: Use the Flex webservice component in Flash CS4 projects | Serge Jespers
上記2つ目と3つ目は同じビデオですが、3つ目には動作可能なサンプルflaファイルがあります。目的のWebServiceでも動作確認済みです。[OSX10.5.8+FlashCS4]