Progression 4.0.1 Public Beta 1.3でのPRMLLoader
僕はProgression3からPRMLLoaderを使ってシーン構成を生成することが多いいのですが、Progression4になって仕様が変わり、こちらのブログを参考にさせて頂いて使っていたのですが、Public Beta 1.3になってどうもディープリンクが上手く作動していないことに気付く。Public Beta 1.2までは大丈夫だったとにと思い、twitterでつぶやいてみると、nium先生からご教示が!!
結論から言うと、PRMLLoaderには、autoGotoというプロパティーがあって、デフォルトでtrueとなっているので、PRMLLoaderで読んだprml.xmlに自動的に移動する→そのあとディープリンクのシーンに移動するという処理になるようで、IndexSceneのatSceneDescend()を通らずに、自動遷移するatSceneInit()を通るとのこと。今までの認識で書いて2重に書いていたみたい。
_prml.autoGoto = false;
としたら無事直りました。nium先生ありがとうございます。
とりいそぎcreateFromXMLを使ってシーン構成を生成したんやけど、PRMLLoader、createFromXML、addSceneFromXMLの使い分けがまだよくわかっておらず。flabakaさんの「PRMLLoaderとaddSceneFromXMLの使い分け」に書かれているように、「一気に全シーンを作成したい場合はPRMLLoader。任意の(シーンの)子シーンを作成したい場合は、addSceneFromXMLを使うのかな? と個人的に思っています。」ということみたいですけど。そうなるとcreateFromXMLはどうなんでしょ?すごい人誰か教えてくださいw。
あっコメントは最近スパムが多くなったので切っちゃったのでtwitterなりなんなりで出来たらお願いします(__)いいかげんこのブログもデザインしなければと思いつつ。。。
僕はProgression4でもPRMLLoaderを使っていこうかと思っているのですが、せっかくcreateFromXMLも使ってみたので、汚いソースですが晒しておきます。正しい使い方かどうかもわかりませぬが;
package michinoko {
import flash.events.Event;
import flash.net.URLLoader;
import flash.net.URLRequest;
import jp.progression.Progression;
import jp.progression.casts.*;
import jp.progression.commands.display.*;
import jp.progression.commands.lists.*;
import jp.progression.commands.net.*;
import jp.progression.commands.tweens.*;
import jp.progression.commands.*;
import jp.progression.config.*;
import jp.progression.data.*;
import jp.progression.debug.*;
import jp.progression.events.*;
import jp.progression.scenes.*;
import michinoko.scenes.*;
/**
* ...
* @author michinoko
* @see http://blog.inasiantime.com/
* @email michinoko[a]inasiantime.com
* @version 1.0.0
* @date created 2010.01.29
* createFromXMLを用いてシーン構造を読み込む
*/
public class Index extends CastDocument {
//PRMLで使うシーンクラスを宣言
IndexScene;
TestScene;
private var _xmlLoader:URLLoader;
public function Index() {
// 自動的に作成される Progression インスタンスの初期設定を行います。
// 生成されたインスタンスにアクセスする場合には manager プロパティを参照してください。
super( null, null, new WebConfig() );
}
/**
* SWF ファイルの読み込みが完了し、stage 及び loaderInfo にアクセス可能になった場合に送出されます。
*/
override protected function atReady():void {
//PRML形式のxmlを読み込む
_xmlLoader = new URLLoader();
_xmlLoader.addEventListener(Event.COMPLETE, onXMLloaded);
var urlReq:URLRequest = new URLRequest("xml/myscene.xml");
_xmlLoader.load(urlReq);
}
//xmlを読み込んだらcreateFromXMLを使いシーン構造を生成して遷移
private function onXMLloaded(e:Event):void {
var xmlObj:XML = new XML(_xmlLoader.data);
var manager:Progression = Progression.createFromXML(stage, xmlObj);
manager.sync = true;
manager.goto(manager.syncedSceneId);
}
}
}