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

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   どこでもFlash【携帯向けFlash関連】
     論理演算子||(OR)について
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
ゲスト
Åê¹ÆNo.30923
投稿日時: 2006-12-19 22:20
論理演算子||(OR)について
はじめまして、こんばんわ。
論理演算子||(OR)について疑問がありましたので質問させて頂きます。
Lite1.1でFScommand2を使って季節ごとに表示をしたいのですが、
どうもプレビューをしても動作していません。
携帯でのチェックもしましたが、いずれも動作せず…。

スクリプト内ではチェックをして見たらエラーもなかったので
殊更頭を悩ませています…。

season = fscommand2("GetDateMonth");
if ((season>=12) || (season<=2)) {
gotoAndStop(1);
} else if ((season>=3) || (season<=5)) {
gotoAndStop(2);
} else if ((season>=6) || (season<=8)) {
gotoAndStop(3);
}
if ((season>=9) || (season<=11)) {
gotoAndStop(4);
}

以前、論理演算子||(OR)を使ってスクリプトを組もうとしたのですが、その時も動作せず泣く泣く他の方法を使ったのですが…。

なにか別の方法でも表示出来る方法がありましたら、ご教授頂けると嬉しいです。よろしくおねがいします…><;
旭日ゆうほ
Åê¹ÆNo.30924
投稿日時: 2006-12-19 23:27
Bak@Fla名人
居住地: 心は岡山
投稿: 91
使用環境:
Windows Vista Home Premium
Flash MX2004 v7.2
Flex2 SDK
Flex3 SDK
FlashDevelop3.0.0 Beta7
Re: 論理演算子||(OR)について
今回は「||(OR)」の問題じゃなさそうですね。

fscommand2("GetDateMonth")が具体的に何を返すのかは僕自身よく分かっていない(すいません;)ので、1?12の数値を返すという前提で考えてみます。

要は、
・12月?2月ならフレーム1を表示
・3月?5月ならフレーム2を表示
・6月?8月ならフレーム3を表示
・9月?11月ならフレーム4を表示
という動作をさせたいわけですね。
範囲を指定したい場合、「||(OR)」よりも「&&(AND)」を使うほうが良いです。
例えば3月?5月なら
if (3 <= season && season <= 5) {
    gotoAndStop(2);
}

といった感じですね。
ただ、12月?2月については例外的処理が必要になりそうです。カレンダーでは12月?2月でも、数値的には「12以上かつ2以下である」という条件は成立しませんので・・・。だから、「今が12月もしくは1月?2月である」という条件である必要があります。
if ((season == 12) || (1 <= season && season <= 2)) {
    gotoAndStop(1);
}

具体的にはこんな感じでしょうか。

よく考えてみれば、Yappeさんが最初に示された条件でも12月?2月に関しましては正常に判定できていましたね・・・。失礼しました。
引用:
Yappeさんは書きました:

if ((season>=12) || (season<=2)) {
gotoAndStop(1);
}


----------------
旭日ゆうほ
swf置いてます。AM902

ゲスト
Åê¹ÆNo.30925
投稿日時: 2006-12-20 1:05
Re: 論理演算子||(OR)について
>旭日ゆうほ さま

返信有難うございます。早速ゆうほさんから教えていただいたスクリプトを使用して作ってみました所、正常に動き出しました!
毎回毎回、思う事ですが出来上がった瞬間の喜びはとてつもないです(笑)
今回は助けを求めてしまったのですが、本当に有難うございました^^

ただやっぱり12月から2月にかけての問題は仰る通り、例外的な処理が必要でした。

なのでスクリプトは。。。

season = fscommand2("GetDateMonth");
if((season == 12) || (1 <= season && season <= 2)){
gotoAndStop(1);
} else if (3<=season && season<=5) {
gotoAndStop(2);
} else if (6<=season && season<=8) {
gotoAndStop(3);
}
if (9<=season && season<=11) {
gotoAndStop(4);
}

というようにさせて頂きました。
これで正常に動きました
ご教授頂きまして、有難うございました?!!
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

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