![]()
2011.09.30 Kikuchi
2011.08.08 takaiw
2011.07.01 knockknock
2011.05.17 Naoki Muramatsu
2011.05.02 knockknock
![]()
![]()
Naoki Muramatsu (1件) Twitter:@Stryfy.
deco-dekai (1件)
ビートダウンパートでご飯何杯も食べられます。
ハードコア・テクニカルディレクターを目指して日々精進。
yanbou (6件)
犬と猫で、家が毎日運動会のフラッシュデベロッパー。
ビールから発泡酒へ変更で節約中。
chikatherrsix (8件) メタル界のフラッシュデベロッパー。またある時はメタルギタリスト。オーサリング中もヘッドバンギングは絶やさない。
akuze (2件)
2003年からユナイティアに寄生しているフラッシュデベロッパー。
シルクドソレイユとカナダが好き。
knockknock (16件)
小遣い2万円のフラッシュデベロッパー。
帰りが遅いのにキレる嫁をだましだまし制作中・・・。
takaiw (18件) フラッシュデベロッパー。遊びでゲームを作るのも好きです。外見に似合わないイラストを描くのも好きです。とにかく作るのが好きです。
![]()
HOME > NaNとDisplayObjectの座標
もうすぐUA-LABOもリニューアルします!
実験的にフレーム&Flashを使ってしまって、ちょっと
使い勝手が悪かったので、普通のHTMLに一旦直して
読みやすくしていきたいと思います。
最近は後輩の良い記事がでてきましたので...。
公開されてからもう半年を過ぎまして、
記者も減りましたが、まだまだがんばってゆきたいと思います。
今回は、つい最近ハマったプチ問題をメモ代わりに書きますね。
NaNというものをご存知だと思いますが、NaNというのは
Numberの型で数字で無いもの(Not a Number)を指します。
ここでいう数字とは正確には「倍精度浮動小数点数」といいます。
var num:Number = Number("あああ");
trace(num);
NaN
というトレース結果になり、
Number,uint,intなどの数字以外は
NaNになります。
そしてNumberの初期値、つまり
下記のように何も代入しない場合も
トレース結果がNaNになります。
var num:Number; trace(num);
このNaNをDisplayObjectクラスの
xおよびyに代入すると
ブラウザによって挙動が変わってしまいます。
たとえば
var sp:Sprite = new Sprite(); var g:Graphics = sp.graphics; g.beginFill(0xff0000,1); g.drawRect(0,0,100,100); this.addChild(sp); sp.x = NaN; sp.y = 200;
wonderflでも一応書いておきました。各ブラウザでも確認してもらえればと思います。
■パブリッシュプレビュー
0になります。
■XP+IE7
表示されません。
■XP+FF
0になります。
■XP+GC
0になります。
■Vista+IE7
0になります。
■Vista+FF
表示されません。
■Vista+GC
表示されません。
OSとブラウザによって全然変わりますね...。
筆者はこれだけしか確認できてませんが、
他のも確認してもらえればと思います。
プレビュー上で表示されていたので
安心していましたが
ブラウザによって表示されなくなる場合もあるので
注意してください。
座標にはハッキリした値を代入できれば問題ないのですが
プロパティ変数を座標に入れ込むとなった際に
そのプロパティ変数も別のプロパティ変数の
四則演算を施した後ですと、
どれかがnullやNaNであればNaNになってしまいます。
しかも、例外をthrowしないのでバグが潜伏して
しまいます。
setterのx,yにNaNを代入しようとすると例外をthrowするように
してほしかったのですけどね。
このブラウザだと消えてしまうんだけど...と言われたときに
思い出してもらえれば嬉しいですね。

takaiw フラッシュデベロッパー。遊びでゲームを作るのも好きです。外見に似合わないイラストを描くのも好きです。とにかく作るのが好きです。