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

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   コーダーズルーム【スクリプト系】
     onEnterFrameとstartDrag
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
hoheipanda
Åê¹ÆNo.7777
投稿日時: 2004-5-31 15:47
新米
居住地:
投稿: 5
使用環境:
Windows2000、FlashMX
onEnterFrameとstartDrag
こちらで質問してよいのか、初心者の部屋でしょうか。
とりあえず、御迷惑おかけいたしますが、よろしくお願いします。

Aボタンを押すと、Bのムービークリップが徐々に動く設定をし、
さらにBには、Aボタンを押していないときに、startDragで、好きにドラッグできるようにようにしたいのですが、
Bをドラッグしても、すぐにAの設定で勝手に動いてしまいます。
以下の記述以外にどのように設定すればよいのでしょうか。
悩んでいます。よろしくお願いします。

Aボタン記述
on(press){
this.onEnterFrame = function(){
ma._x += (200-ma._x)/4;
ma._y += (200-ma._y)/4;
}
}

B(MCクリップの記述)
on(press){
this.startDrag();
}
on(release, releaseOutside){
this.stopDrag();
}
rakeem
Åê¹ÆNo.7785
投稿日時: 2004-5-31 16:48
半人前
居住地: Osaka,Japan
投稿: 53
使用環境:
windows 2000,Flash MX
Mac OS 9.2.2,Flash MX
Mac OS 10.3.3 Flash MX2004pro
Re: onEnterFrameとstartDrag
hoheipandaさん、はじめまして。

Aボタン記述
on(press){
this.onEnterFrame = function(){
ma._x += (200-ma._x)/4;
ma._y += (200-ma._y)/4;
}
}
on(release) {
delete this.onEnterFrame;
}

を記述すればどうでしょうか?
EnterFrameがずっと処理を続けているのを
回避できると思います。
kool_it
Åê¹ÆNo.7786
投稿日時: 2004-5-31 17:05
常連
居住地: 東京
投稿: 92
使用環境:
win7::Win2K:Flash CS5.5:
10.7:Flash CS5.5:
Re: onEnterFrameとstartDrag
これだと 
一度Aボタンを押すと ずっとonEnterFrame が 走ったままなので
定位置についたら onEnterFrame を deleteすれば よいと思います。

あと 蛇足ですが ma._x、ma._y は 永遠に200になることはないので 現在位置との差が1とかになったとき deleteすればよいと思います。
具体的には
引用:


Aボタン記述
on(press){
this.onEnterFrame = function(){
ma._x += (200-ma._x)/4;
ma._y += (200-ma._y)/4;

deffX = Math.abs( 200 - ma._x );
deffY = Math.abs( 200 - ma._y );

if ( deffX < 1 && deffY < 1 ) delete this.onEnterFrame;

}
}
野中文雄
Åê¹ÆNo.7808
投稿日時: 2004-5-31 23:42
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: onEnterFrameとstartDrag
スクリプトについてのご質問は、この[コーダーズルーム]で結構でしょう。なお、ご使用の環境は、プロフィールにご記入ください。

イベントハンドラメソッドMovieClip.onEnterFrameをお使いですので、Flash MX以降だと「推測」します。また、functionは理解されていると考えてよいのでしょうね。

MovieClipインスタンスのアニメーションをButtonから設定してしまうと、複数のButtonでMovieClipをコントロールしようとした場合に交通整理が難しくなります。したがって、アニメーションの処理は、MovieClipインスタンス自身に設定した方がよいでしょう。
引用:
hoheipandaさんは書きました:
こちらで質問してよいのか、初心者の部屋でしょうか。
...
Aボタンを押すと、Bのムービークリップが徐々に動く設定をし、
さらにBには、Aボタンを押していないときに、startDragで、好きにドラッグできるようにようにしたいのですが、
Bをドラッグしても、すぐにAの設定で勝手に動いてしまいます。
...
Aボタン記述
on(press){
this.onEnterFrame = function(){
	ma._x += (200-ma._x)/4;
	ma._y += (200-ma._y)/4;
}
}

B(MCクリップの記述)
on(press){
	this.startDrag();
}
on(release, releaseOutside){
	this.stopDrag();
}

// Button: MovieClipのアニメーションを開始
// Buttonアクション
on (press) {
    // MovieClipのfunctionを呼出す
    ma.xStartMoving(200, 200);
}

// MovieClip: ma
// MovieClipアクション
onClipEvent (load) {
    this.nDeceleration = 4;
    function xStartMoving(nX, nY) {
        this.nTargetX = nX;
        this.nTargetY = nY;
        this.onEnterFrame = this.xAnimation;
    }
    function xStopMoving() {
        delete this.onEnterFrame;
    }
    function xAnimation() {
        var nDistanceX = this.nTargetX-this._x;
        var nDistanceY = this.nTargetY-this._y;
        if (Math.abs(nDistanceX)>0.5 || Math.abs(nDistanceX)>0.5) {
            this._x += nDistanceX/this.nDeceleration;
            this._y += nDistanceY/this.nDeceleration;
        } else {
            this._x = this.nTargetX;
            this._y = this.nTargetY;
            this.xStopMoving();
        }
        trace([this._x, this._y]);
    }
}
on (press) {
    this.xStopMoving();
    this.startDrag();
}
on (release, releaseOutside) {
    this.stopDrag();
}


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

hoheipanda
Åê¹ÆNo.7856
投稿日時: 2004-6-2 9:44
新米
居住地:
投稿: 5
使用環境:
Windows2000、FlashMX
Re: onEnterFrameとstartDrag
rakeemさんとkoolさんと野中さん、とても丁寧な御返答ありがとうございます。
さっそく書き換えて試してみます。
また何かありましたらよろしくお願いいたします。
スレッド表示 | 新しいものから 前のトピック | 次のトピック | トップ

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