- ベストアンサー
RGB値を変数clrに設定する???
- アクションスクリプトって何?という状況から抜け出せず、参考書とまったく同じことなら出来るだろう、FLAファイルもついているし・・と思ってやってみたけどわからなかった。
- カラーチップを作ってそこをクリックしてがら画面をなぞるとマウスを追ってお絵かきができるやつを作りたい。
- ボタンを押した時にボタンの下に置かれているカラーチップのRGB値を変数clrに設定するということは、カラーチップの色情報を変数に取得することを意味する。例えば、黒だったら#000000というRGB値を変数clrに設定することになるのかもしれない。
- みんなの回答 (1)
- 専門家の回答
質問者が選んだベストアンサー
- ベストアンサー
その参考書を見たわけではないので, 正確にはわかりませんが,clrは書かれてあるとおり変数名でしょう。 変数とは値を入れておく入れ物です。 変数名は勝手に作者が付けるもので,特に意味のない文字列にします。 変数名はスクリプト上,意味がなければ何でも良いのですが, tmp flg など子音で短縮してあると意味もわかりやすくなります。 clr については書かれていませんがその他参考↓。 「Flash での命名術」 http://www.macromedia.com/jp/support/flash/ts/documents/fl0182.html でも,紛らわしいことに,FlashにはCLRファイルというのがあります。 Flashのカラーパレット情報を保存しておくファイルらしいです。 http://www2.odn.ne.jp/~lcarsmania/f-anima_m03.htm でも,これとは関係ないと思います。 例えば黒いボタンをステージ上に用意して(実際の色は何色でも良い), ------------------------------ on (release) { clr = "0x000000"; //または _root.clr = "0x000000"; } ------------------------------ と書けば, クリックしたとき "0x000000" という値が clr という変数に代入されるボタンができます。 そして, 黒色以外,何色でも良いので, 四角の小さなムービークリップを用意し(インスタンス名は不要), そのムービークリップに, ------------------------------ on (release) { myColor = new Color(this); myColor.setRGB(_root.clr); } ------------------------------ と書けば, クリックしたとき _root の clr という変数に代入された値の色が付くムービークリップができます。 ムービー上(SWF)で, clr = "0x000000" と書かれたボタンをクリックした後, この四角で小さなムービークリップをクリックすると,このムービークリップは "0x000000" ,つまり黒になります。 この四角で小さなムービークリップをコピペでたくさん敷き詰めれば, クリックしたムービークリップだけが黒になるので絵が描けます。 また,黒のボタンだけではなく,赤のボタンを作って, ------------------------------ on (release) { clr = "0xFF0000"; //または _root.clr = "0xFF0000"; } ------------------------------ と書いておけば, clr には "0xFF0000" が代入されるので, ムービー上(SWF)で,このボタンをクリックした後, 四角で小さなムービークリップをクリックすると,このムービークリップは "0xFF0000" ,つまり赤になります。 参考書は違う例が書かれてあると思いますが原理はそういうことです。 スクリプトで変数 clr に任意の値を与えるので,色を与えるボタンの色は何色でも良いです。 ただ,使う人が見てわかりやすいように,同じ色にしておくほうが良いでしょうね。 また,カラーの頭には 0x を付ける約束になっていますので, 黒ボタンには ----------------------------- on (release) { clr = "000000"; //または _root.clr = "000000"; } ----------------------------- ムービークリップには ----------------------------- on (release) { myColor = new Color(this); myColor.setRGB("0x"+_root.clr); } ----------------------------- としても同じ結果になります。 == 注意 ======================================= 上で書いたのは単なる説明のための例で, 四角で小さなムービークリップをもっと小さくして,ステージ全体に置くと, メモリやCPUを使いすぎてハングアップしてしまう恐れが多大にあります。やめておいた方が良いです。 基本は,持たれている参考書の通りにしてください。 あまり,他の方が作られたのを作りかえるのは, あまりよろしくないと思いますが,参考までに以下を書きます。 Flashゲーム講座&ASサンプル集【Flashの描画について】 の http://hakuhin.hp.infoseek.co.jp/main/as/draw.html#DRAW_00 に「直線を引きたい」という項目があります。 「このFlashのサンプル - draw_00_fla6.fla(15kバイト)」 というサンプルをダウンロードして開いてみると, ステージより左上のムービークリップに ---------------------------------- onClipEvent (load) { // (太さ, 色, アルファ); _root.lineStyle (1, 0x000000, 100); } onClipEvent (enterFrame) { // マウスが押されているとき if (MouseOn == 1) { // 開始座標 _root.moveTo (fmx, fmy); ~ 以下省略 ~ ---------------------------------- と書いてあります。 この部分を下のように書き替えて, ---------------------------------- onClipEvent (enterFrame) { // (太さ, 色, アルファ); // ※変更↓ _root.lineStyle (1, _root.clr, 100); // マウスが押されているとき if (MouseOn == 1) { // 開始座標 _root.moveTo (fmx, fmy); ~ 以下省略 ~ ---------------------------------- ステージ上に新規で以下のように書いた,赤のボタンを作って, ------------------------------ on (release) { clr = "0xFF0000"; //または _root.clr = "0xFF0000"; } ------------------------------ 赤のボタンをクリックした後線を描くと,赤い線が引けます。 「RGB値を変数clrに設定する」 とは,以上のようなことです。
お礼
いつもお世話になっています!! わかりやすい説明ありがとうございました! 任意の記号なんですね。 とりあえず、一色はできました!! よくわからないけど出来たという状況ですが アクションスクリプトをこれから学ぶ とっかかりができたような気がします。 教えて頂いたサイトをじっくりやってみます。 sassakunさんは私のFLASHの師匠ですね!! ありがとうございました。