AS2まではJavaScriptとかに頼らないと自分(swf)のパスを取得できなかったように思うのですが、仕事上で必要に迫られたので調べてみたら、AS3ではloaderInfoを使うことでできるんですね。

//ホスト情報取得  
var url:String = loaderInfo.url;  
var token:Array = url.split("");  
var file:String = token[token.length - 1];  
var myHostInfo:String = file.split("/")[2];  

引用元:suz-lab

実際AS2でパスを調べる方法が無いのかどうか、そこまで詳しくないのではっきりしたことは言えないんですけどねー。

今日は面白そうだったので社長プロジェクト(?)をやっていたのだけど、AS3のヘンな所でハマってしまって、予想よりも時間がかかってしまった。

それでも早いよ!って言われたけど、AS3がもっとわかってたらもっと早いですよ。精進しますね。

で何かというと、String型の数値をNumber型に変換するところでつまづいてた。

var N:Number = string as Number;

↑これだとだめなのね。結果は0になっちゃってた。

parseFloat(string);

↑こうしないと駄目でした。結構初歩かもしれないけど、最初どこがマズいのかわからなくて小一時間ハマった。

AS3は、かなり細かいエラーが出るようになっているのだけど、エラーの内容がかなりわかりにくいというか、表現が曖昧なことがあったりで、慣れないとバグの箇所を特定するのも一苦労ですよ。ハァ。

今回の落とし穴ではコード自体は間違ってないのでエラーすら出ないからさらに「?」マーク出まくったわけですけど。ビバtrace

§

さらにさらに初歩の話で思い出したこと。

Numberの小数点以下を繰り上げるか切り捨てるかの関数Math.ceil()とMath.floor()。いつもどっちがどっちだっけーってなっちゃってたんだけど、「floor」が「床」でつまり切り捨て、「ceil」が「天井」でつまり繰り上げってコトだったのねー!

ちなみにこの前のAS2OOP講座で知った話ですゎょ。

as2の学校2日目レポートでEventDispatcherのことも書こうと思っていたんですが、AS2のコードなので、AS3で開発を始めた今となっては使えねぇナァ、と思いつつヘルプなどを読んで自分なりにAS3版を作ってみました。

Main.as(ドキュメントクラス)

package {  
import flash.display.MovieClip;  
import flash.events.Event;  
public class Main extends MovieClip {  
public function Main() {  
var dispatcher:CustomDispatcher = new CustomDispatcher("aho");  
dispatcher.addEventListener(CustomDispatcher.ACTION, actionHandler);  
dispatcher.doAction();  
}  
private function actionHandler(event:Event):void {  
trace("actionHandler: " + event);  
trace(event.type);  
}  
}  
}  

CustomDispatcher.as

package {  
import flash.events.EventDispatcher;  
import flash.events.Event;  
class CustomDispatcher extends EventDispatcher {  
public static var ACTION:String;  
function CustomDispatcher(string) {  
ACTION = string;  
}  
public function doAction():void {  
dispatchEvent(new Event(CustomDispatcher.ACTION));  
}  
}  
}  

こんな感じでよいものなのか。

型が見つからないか、コンパイル時定数ではありません

MovieClipにカスタムクラスを関連付けようとしたら出たエラー。
わけわからなくて、ググったり、参考書読んだりして、カスタムクラスを見直してたらいつの間にか直った。

細かい書式の問題なんだろうか?よくわからなかった。

§

今日の成果:
Tweenerを覚えた。簡単にスクリプトアニメーションが作れる!
今回は色変更のアニメーションを作った。

データ型の種類

プリミティブ型

  • Boolearn
  • int(-2147483648~2147483647の整数。初期値0)
  • Null(null)
  • Number(整数、符号なし整数、浮動小数点数。int、uintの範囲外の値に使う。初期値NaN)
  • String(ストリング。初期値null)
  • unit(0~4294967295の整数。)
  • void(undefined。戻り値の型注釈としてのみ使われる)

オブジェクト型

  • Object(初期値null)
  • Array
  • Date
  • Error
  • Function
  • RegExp
  • XML
  • XMLList

この間のAS2講義2日目のレポートを書かないうちになんだかんだで就職して、なんのかんのでいきなりAS3で開発する羽目になっています。

そういうわけで(?)講義レポートは置いといて、AS3に四苦八苦している様子を記録しようと思います。

うちに帰ってから書いてもいいけど寝る時間無くなるし、覚えたその場で書いちゃったほうがいいんです。きっと。

んでタイトルにもありますaddFrameScriptなんちゃら。
ドキュメントクラスにSpriteを継承したクラスを使ってたら出たエラー。なんのこっちゃわからなくてググりまくったら、メインタイムラインにスクリプトが書いてあったらだめだったっぽい。ということがわかった。

なーんてコトはヘルプにも何もかいてないっつの。

そもそもaddFrameScriptは隠しメソッドであり、ヘルプにも載ってないのである。

である。じゃないよな。
まあいいや。前途多難。

keyboard_arrow_up