ActionScriptの最近のブログ記事
いまさらながら、イベントハンドラメソッド定義でのターゲット指定を全然理解していなかった。
イベントハンドラメソッド内は、そこはもう別の世界なんだと理解。
3つのボタンがあり、それぞれロールオーバーしたときに、それぞれの中でgotoAndPlayする、というものを作るばあい、
間違った例 : tgtMC.gotoAndStop("over")
for (var i = 0; i<3; i++) {
var tgtMC = this["menu"+i];
tgtMC.onRollOver = function() {
initButtons();
tgtMC.gotoAndStop("over");
};
}
正しい例 : this.gotoAndStop("over")
for (var i = 0; i<3; i++) {
var tgtMC = this["menu"+i];
tgtMC.onRollOver = function() {
initButtons();
this.gotoAndStop("over");
};
}
ここを読んでみて、わかったようなわからないような。というかthisが本当にわけわからない。
逆に、これを記述したフレームのメソッド(initButtons())を、イベントハンドラメソッド内から使う場合、あたりまえにthisから始めると認識されない。
なんとなく復活させてみた。ログインできない、検索できない、全然すすんでない。というかAS3でpopforge使って書き直すのが当面の目標。
なんとなく復活版はこちら
AIR開発しようといろいろ試行錯誤してるけど、Flash CS3を使うのが超早くて便利。
アプリケーション作成までボタンだけで操作可能。
ということで、 Flash CS3 でゼロからはじめよう AIRアプリケーション作成講座 Vol.1
に挑戦してみたところ、なんとブラウザもどきがあっという間に完成した。
今回もAIR Beta3アップデートによる修正が必要だった。
import flash.html.HTMLLoader;
import flash.net.URLRequest;
//読み込む外部HTMLデータの設定
var urlReq:URLRequest = new URLRequest("http://www.apple.com/jp/");
//HTMLデータの読み込みと表示設定
var html:HTMLLoader = new HTMLLoader();
html.width = stage.stageWidth;
html.height = stage.stageHeight;
html.load(urlReq);
//表示処理
this.addChild(html);
とりあえず最初のサンプルだけやってみた。
修正はHTMLControlをHTMLLoaderにするだけ。
本当にブラウザにしてしまうには、たくさんコードを書く必要があるが、ここには可能性を感じる。
例えばファイルをアップするときに、いちいちファイル選択ダイアログを開いて...とやらなくてもドラッグ&ドロップだけで済んでしまう。
FlashからXMLやphpなどのデータを取得する場合、おなじみクロスドメインが必要。
書き方はこんな感じ
<?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="*.yourflashpage.co.jp" secure="false"/>
</cross-domain-policy>
普通のクロスドメインと違うところは、
secure="false"
が必要だという点。
