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

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   コーダーズルーム【スクリプト系】
     onClipEvent (enterFrame) の(load)時の設定を停止する。
投稿するにはまず登録を

スレッド表示 | 古いものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
野中文雄
Åê¹ÆNo.8392
投稿日時: 2004-6-16 22:40
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: onClipEvent (enterFrame) の(load)時の設定を停止する。
HomeText == 03とHomeText02 == 01の場合、まったく同じ動作のように見えます。ふたつの変数を別途設定する理由は、何かあるのでしょうか? 関連する疑問として、MovieClipインスタンスの動作が見かけ上終了した場合(座標値が399にかぎりなく近づいたり、アルファ値が0から100の範囲を超えたとき)、HomeTextやHomeText02の値を保持する必要はありますか? (動作を終了した場合、これらの値を初期化すれば、それ以上の処理を回避することが可能です。)
引用:
takayasuさんは書きました:
onClipEvent (enterFrame) {
if(HomeText == 03){
this._x += (399-this._x)/5;
this._alpha += (aMAX - this._alpha)/10;
}
if(HomeText02 == 01){
this._x += (399-this._x)/5;
this._alpha += (aMAX -this._alpha)/10;
}


この01,02,については「今、01ですよ」「今は02ですよ」と振り分けて認識させる為の数字です。

01、02、03は、数値として1、2、3と同値になります。2桁で記述する理由があるのか、という疑問だと思います。
引用:
ですので読み込んだ時は「03ですよ。」と定義しているつもりだったりしたのですが数字とかにしない方が良いのでしょうか?


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

takayasu
Åê¹ÆNo.8391
投稿日時: 2004-6-16 22:14
新米
居住地:
投稿: 16
使用環境:
MacOSX10.3.5.
FlashMX2004
Re: onClipEvent (enterFrame) の(load)時の設定を停止する。
rin-koさん、はじめまして。こんにちは。

nLoadとしていたのがややこしくなってしまった原因ですね。
03と定義し直します。



onClipEvent (load) {
this._x = _root.StageX-(_root.StageMargin)/5;
this._alpha = 0;
aMax = 100;
HomeText = 03;
}

onClipEvent (enterFrame) {
if(HomeText == 03){
this._x += (399-this._x)/5;
this._alpha += (aMAX - this._alpha)/10;
}
if(HomeText02 == 01){
this._x += (399-this._x)/5;
this._alpha += (aMAX -this._alpha)/10;
}
if(HomeText02 == 02){
this._alpha -= (aMAX)/5
}
}



別の所に設定した条件によって
"HomeText02 == 01"
"HomeText02 == 02"
と振り分けるようにしています。

この01,02,については「今、01ですよ」「今は02ですよ」と振り分けて認識させる為の数字です。

ですので読み込んだ時は「03ですよ。」と定義しているつもりだったりしたのですが数字とかにしない方が良いのでしょうか?
野中文雄
Åê¹ÆNo.8390
投稿日時: 2004-6-16 22:08
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: onClipEvent (enterFrame) の(load)時の設定を停止する。
間違い探しは、絵がふたつ存在して初めて成立ちます。

掲載されたスクリプトは、記述のとおりに動作していると思われます。「正しい絵」つまりtakayasuさんの目的とされる動作を明確にされないかぎり、「推測」してお答えするしかありません。

「MovieClipが読み込まれた時にStageの右端からStageMarginアルファを変えながら進む」動作そのものは、現在のスクリプトでも行われているように思います。問題は、"HomeText02"の値がいつどのように設定され、その際にどのように動作させたいのかです。
引用:
takayasuさんは書きました:
やろうとしていることは、MovieClipが読み込まれた時に
Stageの右端からStageMargin(ここではステージ左端から399と設定)
アルファを変えながら進むというものです。

「うまく動かない」では、ご説明になりません。→【うまくいきません
引用:
レスをいただいた
...
ですと、うまく動かないです。

思いつくかぎりの「間違い」を、「推測」して修正してみました。
onClipEvent (load) {
    this._x = _root.StageX-(_root.StageMargin)/5;
    this._alpha = 0;
     // Flash Player 7で問題になります
    // aMax = 100;
    aMAX = 100;
    HomeText = nLoad;
    nX = 399;
}
onClipEvent (enterFrame) {
    if (HomeText == nLoad) {
        if (Math.abs(nX-this._x)<0.5) {
            delete HomeText;
            this._x = nX;
            this._alpha = 100;
        } else {
            this._x += (nX-this._x)/5;
            this._alpha += (aMAX-this._alpha)/10;
            this._x.trace = stop;
        }
    }
    if (HomeText02 == 1) {
        if (Math.abs(nX-this._x)<0.5) {
            delete HomeText02;
            this._x = nX;
            this._alpha = 100;
        } else {
            this._x += (nX-this._x)/5;
            this._alpha += (aMAX-this._alpha)/10;
            this._x.trace = stop;
        }
    } else if (HomeText02 == 2) {
        if (this._alpha<0) {
            delete HomeText02;
            this._alpha = 0;
        } else {
            this._alpha -= (aMAX)/5;
        }
    }
}


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

rin-ko
Åê¹ÆNo.8389
投稿日時: 2004-6-16 21:24
職人
居住地: 東京
投稿: 397
使用環境:
MacOSX10.5/10.4
WinXP SP3
MX2004Pro/CS3
Re: onClipEvent (enterFrame) の(load)時の設定を停止する。
takayasuさん、こんにちは。
ちょっと気になったのですが、もし関係なかったらゴメンナサイ。
えっと、以下の条件における変数HomeText02の値は文字列ですか?数値ですか?
森さんが指摘なさっているように、スクリプトを拝見した限りでは、最初は空の文字列が入っているみたいですけど。
数値の1と等しいかどうかと、文字列"01"と等しいかどうかは、厳密には違います。
実際はどちらの判定を行いたいのでしょうか?
引用:
if(HomeText02 == 01){
this._x += (399-this._x)/5;
this._alpha += (aMAX -this._alpha)/10;
}
takayasu
Åê¹ÆNo.8388
投稿日時: 2004-6-16 21:15
新米
居住地:
投稿: 16
使用環境:
MacOSX10.3.5.
FlashMX2004
Re: onClipEvent (enterFrame) の(load)時の設定を停止する。
森さん、はじめまして。レスありがとうございます。

やろうとしていることは、MovieClipが読み込まれた時に
Stageの右端からStageMargin(ここではステージ左端から399と設定)
アルファを変えながら進むというものです。

レスをいただいた
onClipEvent (load) {
this._x = _root.StageX - (_root.StageMargin) / 5;
this._alpha = 0;
aMax = 100;
this._x += (399 - this._x) / 5;
this._alpha += (aMAX - this._alpha) / 10;
}
ですと、うまく動かないです。

this._xとalphaが2つ設定しているのが原因でしょうか?
森 巧尚
Åê¹ÆNo.8386
投稿日時: 2004-6-16 20:12
モデレータ
居住地: 宝塚
投稿: 650
使用環境:
.5/CS4/Safari3
XP+2000//IE6
Re: onClipEvent (enterFrame) の(load)時の設定を停止する。
微妙に何をしようとしているのかがよくわからないのですが、スクリプトを見る限りでは、takayasuさんのおっしゃる通りの動きをするスクリプトになっていますよ。

onClipEvent (load)で最初に、HomeText = nLoadと代入していて(ただし、このnLoadには値が入っていないので<空の文字列>が代入されることになります。HomeText = nLoadって何をしているのでしょう?)その後、HomeText02の値が 01の場合は、onClipEvent (enterFrame)で、毎回、if (HomeText == nLoad)とif (HomeText02 == 01)の両方がtrueになるわけですから、両方実行されて、倍のスピードになります。

if (HomeText == nLoad)の中の処理を"onClipEvent (load)"時のみ有効にするのであれば、以下のスクリプトではいけますよ。
引用:

onClipEvent (load) {
this._x = _root.StageX - (_root.StageMargin) / 5;
this._alpha = 0;
aMax = 100;
this._x += (399 - this._x) / 5;
this._alpha += (aMAX - this._alpha) / 10;
}
onClipEvent (enterFrame) {
if (HomeText02 == 01) {
this._x += (399 - this._x) / 5;
this._alpha += (aMAX - this._alpha) / 10;
}
if (HomeText02 == 02) {
this._alpha -= (aMAX) / 5;
}
trace("HomeTextX02 = " + this._x);
if (this._x == 399) {
this._x.trace = stop;
}
}


----------------
森 巧尚
http://www.ymori.com

takayasu
Åê¹ÆNo.8385
投稿日時: 2004-6-16 19:49
新米
居住地:
投稿: 16
使用環境:
MacOSX10.3.5.
FlashMX2004
追記です。
ちなみにStage._widthをリスナー登録もしていたりします。


myListener = new Object();
myListener.onResize = function() {
stageX = Stage.width;
};
Stage.addListener(myListener);


takayasu
Åê¹ÆNo.8384
投稿日時: 2004-6-16 19:06
新米
居住地:
投稿: 16
使用環境:
MacOSX10.3.5.
FlashMX2004
onClipEvent (enterFrame) の(load)時の設定を停止する。
初めまして。takayasuと申します。
MovieClipに以下のようなスクリプトを記入しております。

//stageX = Stage.width;
//StageMargin = _root.stageX - 399;



onClipEvent (load) {
this._x = _root.StageX-(_root.StageMargin)/5;
this._alpha = 0;
aMax = 100;
HomeText = nLoad;
}

onClipEvent (enterFrame) {
if(HomeText == nLoad){
this._x += (399-this._x)/5;
this._alpha += (aMAX - this._alpha)/10;
}
if(HomeText02 == 01){
this._x += (399-this._x)/5;
this._alpha += (aMAX -this._alpha)/10;
}
if(HomeText02 == 02){
this._alpha -= (aMAX)/5
}
trace("HomeTextX02 = "+this._x)
if(this._x == 399){
this._x.trace = stop;
}
}


このスクリプトですと
(HomeText02 == 01)に設定を切り替えた時に(HomeText == nLoad)の設定が残っているのか(見た目で)倍ぐらいのスピードが出てしまいます。

この(HomeText == nLoad)を"onClipEvent (load)"時のみ有効にし、後は無効にする事は出来ますでしょうか?

« 1 (2)
スレッド表示 | 古いものから 前のトピック | 次のトピック | トップ

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