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

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   迷える子羊の部屋【初心者専用】
     withの使い方
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
copperroad
Åê¹ÆNo.12861
投稿日時: 2004-11-30 13:51
半人前
居住地:
投稿: 59
使用環境:
Win Xp professional,Flash CS3
IE7.0
withの使い方
質問させてください。

withの使い方なんですが・・・


button1.enabled = false;
button1.gotoAndStop(2);

を、

with(button1){
 enabled = false;
 gotoAndStop(2);
}

と記述するとenableが機能しないのですが、どこか間違ってるのでしょうか?
教えてください!よろしくお願いします。
ゲスト
Åê¹ÆNo.12866
投稿日時: 2004-11-30 14:25
Re: withの使い方
お疲れ様です。

enabled = false;

へぇ?ボタン無効にすることもできるんだ。知らなかった。
で、本題ですけど、状況を再現してみましたが出来ないですよね・・
何故だ?不思議だ? 私にも教えてください!

って、なんの投稿?ごめんなさい。
copperroad
Åê¹ÆNo.12867
投稿日時: 2004-11-30 14:26
半人前
居住地:
投稿: 59
使用環境:
Win Xp professional,Flash CS3
IE7.0
Re: withの使い方
そうなんですよ。不思議。。。
バグなんでしょうか?
空野大二郎
Åê¹ÆNo.12868
投稿日時: 2004-11-30 14:52
職人
居住地: 愛知
投稿: 389
使用環境:
 XP:Home
FlashMX
IE6.0+FlashPlayer7,0,19
CPU:Pentium4 2.26GHz
メモリ:1,024MB
Re: withの使い方
 まいど。

 残念ながら、copperroadさんの状況を再現できません。
 お手数ですが下記を参考にして、こちらで再現可能な状況説明をお願いします。

 [推測で状況把握]
_root.button1 //ムービークリップ
   |
 button_btn //ボタン(1フレーム目に配置)
   |
 button_overDown //グラフィック(2フレーム目に配置、ボタンのオーバーダウン)

//with()の配置場所
//_rootの1フレーム目のフレームスクリプトとして下記を記述。
引用:
copperroadさんは書きました:
with(button1){
enabled = false;
gotoAndStop(2);
}


 [再現結果]
 ムービークリップ「_root.button1」の「enabled」が「false」に
なり、「_root.button1」は2フレーム目でストップします。
 つまり、copperroadさんのお手元は、この状況ではないようです。

 [推測]
 「_root.button1」の「enabled」が「false」になっているだけで、
「_root.button1.button_btn」は2フレーム目にも表示されていて、
正常に作動しているためか。


----------------
空野 大二郎 アニメーター作家
桜の道

ゲスト
Åê¹ÆNo.12869
投稿日時: 2004-11-30 15:05
Re: withの使い方
投稿者ではありませんが、現象の説明をさせてください。(要点だけに絞ります)

ステージにインスタンス名「btn」のボタンシンボルを配置。
フレームアクション
btn.enabled = false;
とした場合、「btn」はfalseとなり思惑通り動作。

フレームアクション
with (btn) {
   enabled = false;
}
とした場合、「btn」はfalseとならず?という感じです。

以上、状況を把握していただけるでしょうか?
何がいけないのでしょう?基本的なところが間違っています?
copperroad
Åê¹ÆNo.12870
投稿日時: 2004-11-30 15:09
半人前
居住地:
投稿: 59
使用環境:
Win Xp professional,Flash CS3
IE7.0
Re: withの使い方
あ、erikoさんすいません。状況説明ありがとうございます。
まさにそんな感じです。
空野大二郎
Åê¹ÆNo.12873
投稿日時: 2004-11-30 16:22
職人
居住地: 愛知
投稿: 389
使用環境:
 XP:Home
FlashMX
IE6.0+FlashPlayer7,0,19
CPU:Pentium4 2.26GHz
メモリ:1,024MB
Re: withの使い方
 まいど。

 再現しました。erikoさん、情報ありがとうございます。

 問題を絞り込んでみましたが、回答を得るには至りませんでした。
申し訳ありません。

 とりあえず、マクロメディア社に問い合わせてみますが、
そういう現象が起こるという前提で、with()を使わない別の対応策を
探してみて下さい。

 そして、熟練者の投稿に期待しましょう。
 (以下は、再現状況。)

 [現状]
 _rootにボタンを配置
 _root.btn

 _rootの1フレーム目のフレームスクリプトを記述。
//_root.btn.enabled = false;  //コメントを外すと変更が適応される。

with (_root.btn) {
	enabled = false;  //不作動(下記、参考)
	_x += 30;   //作動
	_focusrect = false;  //作動
	tabEnabled = false;  //不作動
	trace ('_focusrect = ' + _focusrect);  //「false」と表示される
	trace ('enabled = ' + enabled);	  //「true」と表示される
}


 [問題点]
 with()でボタンを指定した場合、プロパティ「enabled」の変更ができない。
 (「tabEnabled」も変更できないことから、「_」なしのプロパティのみの現象か?)

 [追記]
 with()のオブジェクトの対象がムービークリップの場合、
「enabled」プロパティの変更はできた。


----------------
空野 大二郎 アニメーター作家
桜の道

永井勝則
Åê¹ÆNo.12876
投稿日時: 2004-11-30 17:21
職人
居住地: 白馬村
投稿: 796
使用環境:
Windows 7 :Flash CS4:
10.6.8 :Flash CS5.5
Re: withの使い方
永井勝則です。

全部書いてからここを書いていますが、以下は嘘ばっかりかも知れません。
私の類推です。

ML過去ログでwithを検索すると、いっぱい出てきます。
マクロメディアのTechNoteにtellTargetをFlash5のアクションに書きかえるにはというのがあります。
過去ログとTechNoteや参考書をざっとみるかぎり、
1)with()はFlash5のとき生まれ、tellTargetのかわりに使うようになった。
2)Flash5のときは、引数にオブジェクトかムービークリップを指定するようになっていた。
3)Flash5ではボタンは”オブジェクト”扱いでなかった。
4)Flash MXでボタンはButtonオブジェクトとなった。
などから類推するに、Buttonオブジェクトはwith()では参照できない”新しいオブジェクト”なのではないか、と思う訳です。
_visible = false;などの"_プロパティ"は扱えるようで、".プロパティ"は扱えない、ということがあるのかも知れません。

じゃあ、どうすればいいのかということですが、ActionScrpt2.0だ、Classだというのですから、with()はいかにもその路線からずれている感じがしますので、もう使わない、というのではどうでしょう?もしくはムービークリップにたいしてのみ使うとか。

引き続き検証してみます。


----------------
永井勝則:
himco.jp :

なるん
Åê¹ÆNo.12879
投稿日時: 2004-11-30 17:48
新米
居住地: さい゚ ∀゚たま
投稿: 18
使用環境:
WinXP,FlashMX2004
Re: withの使い方
いろいろ試したのですが明確な回答を得るには至りませんでした。
withステートメント中でbutton1のenabledが未定義変数のようにされてしまっているようです。
with外で一度enabledを定義すれば変更可能になります。

こちらが参考になるかもしれません。
http://www.flash-jp.com/modules/newbb/viewtopic.php?viewmode=flat&topic_id=1436&forum=6

withの動作についてはスコープチェーンの知識があると理解が深まりそうです。
http://faces.bascule.co.jp/scopechain.html

withはあまり使い勝手がよくないようですね。
私も使っていません。
youich
Åê¹ÆNo.12883
投稿日時: 2004-11-30 19:06
職人
居住地: kobe
投稿: 349
使用環境:
Tiger
Re: withの使い方
引用:

同じくだと思います。
引用:
helpより

with アクション内に変数を設定するには、with アクションの外側で変数を宣言しておくか、変数を設定するタイムラインへのフ ルパスを入力する必要があります。

Button.prototype.enabledは設定されているけど
ステージに配置されたbutton1のenabledは設定されていないので
with内ではenabledの値を設定できないのだと思います。
function Obj(){}
Obj.prototype.x = '';

o = new Obj();

with(o){
	x = 'xxx';
}

trace('o.x is ' + o.x); //o.x is

o.x = 123;
with(o){
	x = 'xxx';
}

trace('o.x is ' + o.x); //o.x is xxx

また他にはボタン自身の参照を得れば可能ですね

with(button1){
	valueOf().enabled = false;
}


----------------
- yo

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

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