トップへ戻るニュースフォーラムFLASH-ML 過去ログBak@Flaダウンロードよくある質問と答
ログイン
ユーザ名:

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   迷える子羊の部屋【初心者専用】
     MCの存在を調べる
投稿するにはまず登録を

フラット表示 前のトピック | 次のトピック
投稿者 スレッド
961832p
Åê¹ÆNo.45402
投稿日時: 2010-7-29 20:34
常連
居住地: Akiruno-shi
投稿: 155
使用環境:
Re: MCの存在を調べる
 
自分はこのあたり、いつも感覚的に使ってしまっているので(汗)、解釈が間違っているかもしれませんが、
「if(a_mc == true)」は、「MovieClip型の変数a_mcの中身」と「Boolean型の値true」は等しいかどうかの評価結果が真か偽かという事なので、この場合は偽に。
「if(a_mc)」は、MovieClip型の変数a_mcの中身の評価結果が真か偽かという事なので、undefinedやnullが入っていれば偽、それ以外のもの(参照?)が入っていれば真に、
といった感じなのでしょうか。

「感覚的に」とか言ってる自分が言うのは変ですが(汗)、慣れないうちは略さずに丁寧な記述を心がけたほうが、ミスも防げて良いのかもしれませんね。
気になったので、どういうのがtrueやfalseになるのか自分もAS2とAS3の両環境でやってみました。コードと各結果は下にありますので参考になれば幸いです。

このスレッドとは直接関係ありませんが、AS3環境では中身がundefinedではなくnullに置き換えられていて、結果がAS2の時と少し違っていました。
こういったところは、ちゃんと把握していないとバグが入り込みやすそうで、何だか不安になりますね(汗)。

----------------

以降は今回試したAS2とAS3のコードです。コメント部分は各行の出力結果になっています。

【AS2】

var mc0:MovieClip;
var mc1:MovieClip = undefined;
var mc2:MovieClip = null;
var mc3:MovieClip = this.createEmptyMovieClip("3_mc", this.getDepth() + 1);

//undefined undefined null _level0.main_mc.3_mc
trace("i "+ mc0 +" "+ mc1 +" "+ mc2 +" "+ mc3);

//false false false false
trace("i "+ (mc0 == true) +" "+ (mc1 == true) +" "+ (mc2 == true) +" "+ (mc3 == true));

//false false false false
trace("i "+ (mc0 == false) +" "+ (mc1 == false) +" "+ (mc2 == false) +" "+ (mc3 == false));

//false false false true
trace("i "+ Boolean(mc0) +" "+ Boolean(mc1) +" "+ Boolean(mc2) +" "+ Boolean(mc3));

//false false false true
trace("i "+ (Boolean(mc0) == true) +" "+ (Boolean(mc1) == true) +" "+ (Boolean(mc2) == true) +" "+ (Boolean(mc3) == true));

//true true true false
trace("i "+ (Boolean(mc0) == false) +" "+ (Boolean(mc1) == false) +" "+ (Boolean(mc2) == false) +" "+ (Boolean(mc3) == false));

//true true true false
trace("i "+ !mc0 +" "+ !mc1 +" "+ !mc2 +" "+ !mc3);

//false false false true
trace("i "+ !!mc0 +" "+ !!mc1 +" "+ !!mc2 +" "+ !!mc3);

//true true true false
trace("i "+ (mc0 == undefined) +" "+ (mc1 == undefined) +" "+ (mc2 == undefined) +" "+ (mc3 == undefined));

//true true true false
trace("i "+ (mc0 == null) +" "+ (mc1 == null) +" "+ (mc2 == null) +" "+ (mc3 == null));

//true true false false
trace("i "+ (mc0 === undefined) +" "+ (mc1 === undefined) +" "+ (mc2 === undefined) +" "+ (mc3 === undefined));

//false false true false
trace("i "+ (mc0 === null) +" "+ (mc1 === null) +" "+ (mc2 === null) +" "+ (mc3 === null));

//false false
trace("i "+ (undefined == true) +" "+ (null == true));

//false false
trace("i "+ (undefined == false) +" "+ (null == false));

//false false
trace("i "+ (Boolean(undefined) == true) +" "+ (Boolean(null) == true));

//true true
trace("i "+ (Boolean(undefined) == false) +" "+ (Boolean(null) == false));

//true true
trace("i "+ (!undefined == true) +" "+ (!null == true));

//false false
trace("i "+ (!undefined == false) +" "+ (!null == false));

//false false
trace("i "+ (!!undefined == true) +" "+ (!!null == true));

//true true
trace("i "+ (!!undefined == false) +" "+ (!!null == false));

【AS3】

var mc0:MovieClip;
var mc1:MovieClip = undefined;
var mc2:MovieClip = null;
var mc3:MovieClip = new MovieClip();

//null null null [object MovieClip]
Log.trace("i "+ mc0 +" "+ mc1 +" "+ mc2 +" "+ mc3);

//false false false false
Log.trace("i "+ (mc0 == true) +" "+ (mc1 == true) +" "+ (mc2 == true) +" "+ (mc3 == true));

//false false false false
Log.trace("i "+ (mc0 == false) +" "+ (mc1 == false) +" "+ (mc2 == false) +" "+ (mc3 == false));

//false false false true
Log.trace("i "+ Boolean(mc0) +" "+ Boolean(mc1) +" "+ Boolean(mc2) +" "+ Boolean(mc3));

//false false false true
Log.trace("i "+ (Boolean(mc0) == true) +" "+ (Boolean(mc1) == true) +" "+ (Boolean(mc2) == true) +" "+ (Boolean(mc3) == true));

//true true true false
Log.trace("i "+ (Boolean(mc0) == false) +" "+ (Boolean(mc1) == false) +" "+ (Boolean(mc2) == false) +" "+ (Boolean(mc3) == false));

//true true true false
Log.trace("i "+ !mc0 +" "+ !mc1 +" "+ !mc2 +" "+ !mc3);

//false false false true
Log.trace("i "+ !!mc0 +" "+ !!mc1 +" "+ !!mc2 +" "+ !!mc3);

//true true true false
Log.trace("i "+ (mc0 == undefined) +" "+ (mc1 == undefined) +" "+ (mc2 == undefined) +" "+ (mc3 == undefined));

//true true true false
Log.trace("i "+ (mc0 == null) +" "+ (mc1 == null) +" "+ (mc2 == null) +" "+ (mc3 == null));

//false false false false
Log.trace("i "+ (mc0 === undefined) +" "+ (mc1 === undefined) +" "+ (mc2 === undefined) +" "+ (mc3 === undefined));

//true true true false
Log.trace("i "+ (mc0 === null) +" "+ (mc1 === null) +" "+ (mc2 === null) +" "+ (mc3 === null));

//false false
Log.trace("i "+ (undefined == true) +" "+ (null == true));

//false false
Log.trace("i "+ (undefined == false) +" "+ (null == false));

//false false
Log.trace("i "+ (Boolean(undefined) == true) +" "+ (Boolean(null) == true));

//true true
Log.trace("i "+ (Boolean(undefined) == false) +" "+ (Boolean(null) == false));

//true true
Log.trace("i "+ (!undefined == true) +" "+ (!null == true));

//false false
Log.trace("i "+ (!undefined == false) +" "+ (!null == false));

//false false
Log.trace("i "+ (!!undefined == true) +" "+ (!!null == true));

//true true
Log.trace("i "+ (!!undefined == false) +" "+ (!!null == false));

※AS3環境ではビルド時、以下の警告がでました。

Main.as(27): col: 112 警告: MovieClip 型の変数は undefined にすることができません。値 undefined は MovieClip に型強制された後で比較されます。
            Log.trace("i " + (mc0 == undefined) + " " + (mc1 == undefined) + " " + (mc2 == undefined) + " " + (mc3 == undefined));
                                                                                                               ^
Main.as(30): col: 115 警告: MovieClip 型の変数は undefined にすることができません。値 undefined は MovieClip に型強制された後で比較されます。
            Log.trace("i " + (mc0 === undefined) + " " + (mc1 === undefined) + " " + (mc2 === undefined) + " " + (mc3 === undefined));
                                                                                                                  ^
Main.as(33): col: 59 警告: null の比較が無効です。Boolean 型の変数は null にすることができません。
            Log.trace("i " + (undefined == true) + " " + (null == true));
                                                          ^
Main.as(34): col: 60 警告: null の比較が無効です。Boolean 型の変数は null にすることができません。
            Log.trace("i " + (undefined == false) + " " + (null == false));
                                                           ^


----------------
:961832p:
- だんだんAS3に慣れてきた“なんちゃって”AMES使いの日曜プログラマー

フラット表示 前のトピック | 次のトピック

題名 投稿者 日時
   MCの存在を調べる cancan 2010-7-28 21:10
     Re: MCの存在を調べる vader 2010-7-28 23:06
       Re: MCの存在を調べる cancan 2010-7-28 23:59
     Re: MCの存在を調べる mayor 2010-7-28 23:08
       Re: MCの存在を調べる cancan 2010-7-29 0:02
         Re: MCの存在を調べる mayor 2010-7-29 0:49
           Re: MCの存在を調べる cancan 2010-7-29 11:28
             Re: MCの存在を調べる mayor 2010-7-29 12:10
               Re: MCの存在を調べる cancan 2010-7-29 15:01
                 Re: MCの存在を調べる mayor 2010-7-29 15:14
                   Re: MCの存在を調べる cancan 2010-7-29 20:27
                     Re: MCの存在を調べる Fumio 2010-7-30 2:33
                       Re: MCの存在を調べる cancan 2010-7-30 12:50
               » Re: MCの存在を調べる 961832p 2010-7-29 20:34
                   Re: MCの存在を調べる cancan 2010-7-30 12:42
                     Re: MCの存在を調べる 961832p 2010-7-30 14:01
                       Re: MCの存在を調べる Fumio 2010-7-31 5:49

投稿するにはまず登録を
 
Copyright (C) 2003 FLASH-japan. All rights reserved.
Powered by Xoops