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

パスワード:


パスワード紛失

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

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
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)"時のみ有効にし、後は無効にする事は出来ますでしょうか?

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);


森 巧尚
Åê¹Æ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.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つ設定しているのが原因でしょうか?
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;
}
野中文雄
Åê¹Æ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;
        }
    }
}


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

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.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ですよ。」と定義しているつもりだったりしたのですが数字とかにしない方が良いのでしょうか?


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

森 巧尚
Åê¹ÆNo.8393
投稿日時: 2004-6-16 23:44
モデレータ
居住地: 宝塚
投稿: 650
使用環境:
.5/CS4/Safari3
XP+2000//IE6
Re: onClipEvent (enterFrame) の(load)時の設定を停止する。
私が前に言った
引用:
onClipEvent (load)で最初に、HomeText = nLoadと代入していて(ただし、このnLoadには値が入っていないので<空の文字列>が代入されることになります。HomeText = nLoadって何をしているのでしょう?)その後、HomeText02の値が 01の場合は、onClipEvent (enterFrame)で、毎回、if (HomeText == nLoad)とif (HomeText02 == 01)の両方がtrueになるわけですから、両方実行されて、倍のスピードになります。

はご理解戴けてましたでしょうか?野中さんも同じように指摘されています。

引用:

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

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

ですので読み込んだ時は「03ですよ。」と定義しているつもりだったりしたのですが数字とかにしない方が良いのでしょうか?


だから、同じ原因ですよ。今の状況を示すHomeTextとHomeText02をどうして2つ用意する必要があるのですか?今の状況が2つになってしまいますよ。
「今、01ですよ」「今は02ですよ」と言っておきながら、同時に「今は03でもありますよ」と言っているわけです。
だから、「if(HomeText == 03){」を実行したあとに、「if(HomeText02 == 01){」の内容も実行されて、内容が同じですから、2回実行されることになって、倍のスピードになっているわけです。
つまり、1つの変数で状況を表すようにしてはどうですか?
HomeTextを使うのをやめて、HomeText02だけ使うようにしたらいいように思いますよ。

考え方(仕様と設計)の詳細をもう少し説明していただけないと具体的な解答は難しいですよ。
引用:
やろうとしていることは、MovieClipが読み込まれた時に
Stageの右端からStageMargin(ここではステージ左端から399と設定)
アルファを変えながら進むというものです。

というだけの説明だけでは足りないのですよ。この説明でおっしゃってることはすでに今のスクリプトで実現できていますから、できてますよ、としか言いようないですら。


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

takayasu
Åê¹ÆNo.8394
投稿日時: 2004-6-17 0:02
新米
居住地:
投稿: 16
使用環境:
MacOSX10.3.5.
FlashMX2004
Re: onClipEvent (enterFrame) の(load)時の設定を停止する。
初めまして、takayasuと申します。
野中さんのwebや本も2冊購入し勉強させていただいております。

まだまだ私の勉強不足や説明不足があったりする中で
スクリプト解読及び再スクリプト考案していただきありがとうございます。



まず、やろうとしている動きですが
---
・ボタンが2つあります。(Bt_1M), (Bt_2M),とします。
((MovieCilpにシンボル化しています))
<読み込まれると同時にウインドウ内に表示されます>

・画像が2つあります。(Image_1M), (Image_2M),とします。
((MovieCilpにシンボル化して基準点は左上に設定))
--
--
<ボタン(Bt_1M)は画像の(Image_1M),に"項目1"として互いに密接に関係あるものです。>
<ボタン(Bt_2M)は画像の(Image_2M),に"項目2"として互いに密接に関係あるものです。>
--
---

/////
読み込まれたら画像のひとつ(Image_1M)は
「Stageの右端からStageの左端から399まで進み、止まります。と同時にアルファも0%から100%になります。」
この時、もう一つの画像(Image_2M)のthis._xはウインドウサイズを変えても見えないように
this._x = -this._width;
としています。

ボタン(Bt_2M)を"Click"すると
画像(Image_1M)は
_alphaが、だんだんと0%になります。
画像(Image_2M)は
「Stageの右端に瞬時に飛び、そこからStageの左端から399まで進み、止まります。と同時にアルファも0%から100%になります。」

そこからボタン(BT_1M)を"Click"すると
画像(Image_2M)は
_alphaが、だんだんと0%になります。
画像(Image_1M)は
「Stageの右端に瞬時に飛び、そこからStageの左端から399まで進み、止まります。と同時にアルファも0%から100%になります。」
/////
という事をボタンを押す事によって繰り返すといった感じです。





スクリプトはとりあえず下記のように記述しました。

//別レイヤーに記述
Bt_1M.onRelease = function() {
Image_1M._x = _root.StageX + Image_2M._width;
Image_1M.ImageMove = 01;
Image_2M.ImageMove = 02;
};

Bt_2M.onRelease = function() {
Image_2M._x = _root.StageX + Image_2M._width;
Image_2M.ImageMove = 01;
Image_1M.ImageMove = 02;
};

//Bt_1MのMovieClipに記述
onClipEvent (load) {
this._x = _root.StageX-(_root.StageMargin)/5;
this._alpha = 0;
aMax = 100;
ImageMove = 03;
}
onClipEvent (enterFrame) {
if(ImageMove == 03){
this._x += (399-this._x)/5;
this._alpha += (aMAX - this._alpha)/10;
}
if (ImageMove == 01) {
this._x += (399-this._x)/5;
this._alpha += (aMAX - this._alpha)/10;
}
if (ImageMove == 02) {
this._alpha -= (aMAX)/5;
}
}

//Bt_2MのMovieClipに記述
onClipEvent (load) {
this._x = -this._width;
this._alpha = 0;
aMax = 100;
}

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












また質問の際に記入した
onClipEvent (enterFrame) {
if(HomeText == 03){
...は

onClipEvent (enterFrame) {
if(HomeText02 == 03){
の記入ミスでした。。。
(1) 2 »
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

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