みんなに優しく、解りやすくをモットーに開設しています。 以下のルールを守りみんなで助け合いましょう。
1.ファイルメーカーで解らない事があればここで質問して下さい。 何方でも、ご質問・ご回答お願いします。 (優しく回答しましょう)
You are not logged in.
Pages: 1
初めてスクリプトを組んでみました
作ったのはお気に入りなどに使うレート機能です。
発想や組み方はこれであってますか?
不満点は
・オブジェクトフィールドなのでドラッグアンドドロップの操作が有効になってしまう
・何もないところを長押しすると点線上の枠線が表示される
といいったところです
選択できないようにしたところアクティブ位置番号が取得できませんでした
これらを克服するには繰り返しフィールドを使わずに
独立したフィールド(画像)として配置して、
その上に透明ボタンを配置し
それぞれのボタンに対応した数値をレート数に入れ、
それに応じてオンオフの画像を入れ替える、という処理になりますか?
それと、どうやってもわからなかったことは
クリックしたところがすでにオンならオフにするという処理がわかりませんでした
CASE構文の中にIFなどまぜてみましたがうまくできませんでした
ファイルはネットでアップローダーで検索した一番上のサイトにアップしました
もしアップローダーがまずかったらあげなおします
http://fast-uploader.com/file/7039198442594/
(PASS:fmpbbs)
WIN!0 FMP15
繰り返しフィールドのままでもトリガー操作をボタンに置き換えられます。
繰り返しを1ッづつの小間に分けて、それぞれの小間ごとに個別ボタンが設定できます。
繰り返し位置番号はスクリプト引数としてスクリプト渡しすれば問題ありません。
Offline
つまり選択できないようにした繰り返しフィールドの上に透明ボタンを配置する
ということですか?
透明ボタンを配置しても良いのですが、繰り返しフィールドその物に、 OnObjectEnter トリガーを設定しておくと、そのフィールドに入ったイベントでスクリプトが起動します。繰り返し位置番号をスクリプト引数にしておけば、クリックした位置をスクリプトに渡せます。
Offline
つまり選択できないようにした繰り返しフィールドの上に透明ボタンを配置する
ということですか?
いいえ、小間を直接ボタンにします。透明ボタンを不要にするアイデアです。
(もちろんフィールド入力禁止を設定、でも、ボタンはOnClickイベントで発火しますから)
それと、繰り返しフィールド自体を計算フィールドにしてしまえば、そもそも現状のままで良いのかとも?
また、オンオフの切り替えも、選択位置からそのフィールド値が取れるので判別式に反映すれば良いでしょう。
更に、どうせ繰り返しを利用するなら、2つの画像フィールドも1つの繰り返し[2]フィールドするとキレイかな!
Last edited by Hiro (2017-01-06 11:14:20)
Offline
元の環境(繰り返しフィールドとOnObjectEnterトリガ)で全ての問題点を解消したサンプルをアップしました。
●サンプル「レートv2.fmp12」→ http://yahoo.jp/box/Udw6PI
Offline
ありがとうございます
いくつかわからないこと
があるのでおねがいします
1,
Get(アクティブ繰り返し位置番号) - (Get(アクティブ繰り返し位置番号)=レート::レート数[1])
ですが
Get(アクティブ繰り返し位置番号)=レート::レート数[1]とはどういった計算でしょうか?
アクティブ繰り返し位置番号から何を引いているのですか?
またレート数[1]となっているのはなぜですか?
レート数は繰り返しではないのに指定しているのがわかりません。
2,
画像[(Get(計算式繰り返し位置番号)>レート数[1])+1]
やっていることは繰り返し位置番号がレート数より大きければ+1するとうことですよね?
IF構文を使わずとも > の場合というしていができるのですか?
3,
なおスクリプトの最後には
検索条件確定をつけるものなのでしょうか?
ありがとうございます
いくつかわからないこと
があるのでおねがいします1,
Get(アクティブ繰り返し位置番号) - (Get(アクティブ繰り返し位置番号)=レート::レート数[1])ですが
Get(アクティブ繰り返し位置番号)=レート::レート数[1]とはどういった計算でしょうか?
アクティブ繰り返し位置番号から何を引いているのですか?
またレート数[1]となっているのはなぜですか?
レート数は繰り返しではないのに指定しているのがわかりません。2,
画像[(Get(計算式繰り返し位置番号)>レート数[1])+1]やっていることは繰り返し位置番号がレート数より大きければ+1するとうことですよね?
IF構文を使わずとも > の場合というしていができるのですか?3,
なおスクリプトの最後には
検索条件確定をつけるものなのでしょうか?
1.式は論理式で、計算結果は、真で「1」を、偽で「0」が返ります。
2.()内式は、論理式の考え方です。
3.結果を繰り返しフィールドの計算式に反映更新させるためです。取り去って挙動の変化をご自身で確かめてみて下さい。
Last edited by Hiro (2017-01-06 23:42:32)
Offline
IF構文でなくともAとBを = や > で比較させれば
0か1での結果がでるということですか?
レート::レート数[1]の[1]で繰り返しがない
レート数フィールドの繰り返し位置を指定しているのはなぜですか?
> IF構文でなくともAとBを = や > で比較させれば 0か1での結果がでるということですか?
そうです。(A = B)は、If(A = B; 1; 0)と同じ結果を得るという事です。
そう思ったら、質問する前に、ご自分で試して確認するようにしてくださいネ。
> レート::レート数[1]の[1]で繰り返しがないレート数フィールドの繰り返し位置を指定しているのはなぜですか?
繰り返しフィールド内から非繰り返しフィールドを参照する場合のオマジナイ、Extend() の簡略記述別法です。
効果は、ご自分で外してみて結果をお確かめください。
Offline
Pages: 1
[ Generated in 0.005 seconds, 9 queries executed - Memory usage: 524.84 KiB (Peak: 545.75 KiB) ]