D0803302 文字の色をユーザーが変更できるようにしたい
Name ad
Date 2008年03月30日 (日) 21時08分
Message 下記アドレスのように、テキストをうつと指定した場所にでて、
サイドに色のサンプルをおき、クリックするとそのテキストの
色が変わるようにしたいです。
御存じの方、教えて下さい。
http://www.takakoh.co.jp/sp30/05namable/index.html
Response 01
2008年03月31日 (月) 02時52分> joy 
adさん、
今晩はというか、おはようございますですか?
絵の方の色変更は、カバーしてませんが、文字の色変更の簡単なサンプルを下のurlに置きました。Flash8で保存してます。
【作り方】
1.テキスト入力用のTextFieldのインスタンス名をinput_txtとし、上の出力用のダイナミックテキストのインスタンス名をoutput_txtとします。
2.各種のボタンを用意します。
scriptレイヤーの第一フレームに、以下のように記載してるだけです。

enter_btn.onRelease = function():Void {//enterボタンが押されたら、input_txtの文字列を、output_txtの文字列に代入
output_txt.text = input_txt.text;//最初は、黒に設定してるので、黒で、表示される
};

red_fmt = new TextFormat();//新規のフォーマットオブジェクトを作成し
red_fmt.color = 0xFF0000;//そのカラーを、赤とする
red_mc.onRelease = function():Void {//赤のMovieClipボタンが押されたら、output_txtに、このフォーマットを適用する
output_txt.setTextFormat(red_fmt);
};

/*以下同様に、カラーだけ変更して実施*/
yellow_fmt = new TextFormat();
yellow_fmt.color = 0xFFF000;
yellow_mc.onRelease = function():Void {
output_txt.setTextFormat(yellow_fmt);
};

blue_fmt = new TextFormat();
blue_fmt.color = 0x0000FF;
blue_mc.onRelease = function():Void {
output_txt.setTextFormat(blue_fmt);
};

もし、動きがおかしかったら、再度投稿下さい。
http://homepage2.nifty.com/joys/answers/textcolor.html
Response 02
2008年04月01日 (火) 03時14分> joy 
adさん、
該当サイトを良くみたら、一度色変更した後に、テキスト入力すると、入力された文字にも、その色変更の結果が、反映されるようなので、以下のように変更しました。

var Check:String = "";
//色の制御変数を、Checkとし、初期値は、blank

/* enterボタンを押すことによる、input_txtの文字列を、output_txtに代入、且つ、以前に発生した、文字の色変更を反映させる*/
enter_btn.onRelease = function():Void {
output_txt.text = input_txt.text;
//テキスト入力文字列を、ダイナミックテキストへ代入
if (Check == "red") {
//Checkの文字列が、"red"なら、色を赤に変更
output_txt.setTextFormat(red_fmt);
} else if (Check == "yellow") {
output_txt.setTextFormat(yellow_fmt);
} else if (Check == "blue") {
output_txt.setTextFormat(blue_fmt);
}
};

/* 以下は、TextFormatの定義領域 */
red_fmt = new TextFormat();
red_fmt.color = 0xFF0000;
red_btn.onRelease = function():Void {
//赤のボタンを押したら、output_txtを赤に変更し、Checkを"red"に変更
output_txt.setTextFormat(red_fmt);
Check = "red";
};
yellow_fmt = new TextFormat();
yellow_fmt.color = 0xFFF000;
yellow_btn.onRelease = function():Void {
output_txt.setTextFormat(yellow_fmt);
Check = "yellow";
};
blue_fmt = new TextFormat();
blue_fmt.color = 0x0000FF;
blue_btn.onRelease = function():Void {
output_txt.setTextFormat(blue_fmt);
Check = "blue";
};

尚、このように3色程度なら、いいのですが、色の数が多い場合は、配列と、for文を使った方が、スッキリはしますね。
Response 03
2008年04月03日 (木) 15時04分> ad 
joyさん
大変ていねいにお返事頂きありがとうございます。
申し訳ないですが当方フラッシュ5を使っておりますが、
フラッシュ5でもできるのでしょうか??
説明を読んだのですが、こういった(アクションスクリプト??)ことは
未経験のためほとんど意味がわかりませんが、
がんばってやってみます。
ずうずうしいですが、もっと簡単な初心者向けの
良い方法があると嬉しいです。

本当にお返事ありがとうございました。
Response 04
2008年04月03日 (木) 23時40分> joy 
adさん、
私は、CS3を使ってますので、保存が、FLash8まででしか、出来ません。

1)Player 5.0で行けるかどうかは、試せないので、分かりませんが、AS2.0でPlayer5.0にして、Res01のスクリプトをコピーして、シーンの第一フレームに、ペーストしてください。
(Flash8からのユーザーのため、古いバージョンのことは、知らないので、間違っていたら、失礼しました)
2)ご自分で作業する必要があるのは、
2.1下のテキスト入力は、テキスト入力を選択し、インスタンス名を、input_txtとします。
2.2上のテキスト出力は、ダイナミックテキストを選択し、インスタンス名を、output_txtとします。
2.3ステージ上に、丸図形を描き、MovieClip化します。そのMCを、ステージ上に3つ配置し、インスタンス名を、red_mc、yellow_mc、blue_mcとします。ENTER用のものは、作るのが面倒だったので、コンポーネントを使いましたが、ご自分で、btnを作っても良いでしょう。インスタンス名を、enter_btnとします。

これで、動かなければ、バージョンが古いからだと思います。
これ以外の、方法は、私は、知りません。
Response 05
2008年04月05日 (土) 12時04分> joy   
adさん、
おはようございます。
あれから、Player5.0で出来ないか調べてみましたが、TextField.TextFormat();でオブジェクトを作成しなくても、TextField.textColor=0xXXXXXX;でテキストの色変更が出来ますが、いずれのケースも、残念ながら、Flash Player6.0以上でないと動かないようです。

他の方法が思い付きませんので、今回は、パスさせて頂きます。
Response 06
2008年04月05日 (土) 16時45分> ad   
なん度もお返事ありがとうございます。
プレイヤー6でないと動かないとのことですが、
フラッシュ5のソフトで作成することはできても
プレイヤー6をインストールしなければ
見ることができないと
いうことでしょうか??
作成はフラッシュ5でもいけるのでしょうか??
Response 07
2008年04月05日 (土) 17時52分> joy 
adさん、
閲覧者は、Player9.0まで、自由にDownLoadできるので、問題はないですが、我々作成者側のFlash
をPublish時に、、Player6.0以上を指定する必要があるということです。

Flashのツールバーの、左上にある
ファイル>パブリッシュ設定>Flashタグ>バージョンをPlayer6.0以上にする必要があるという意味です。

これが、選択できないと、無理かなと思いますが、先ずは、諦めずに、何でも、試してみることですよ。
Response 08
2008年04月06日 (日) 00時34分> joy   
adさん、
今晩は。
タイムライン方式を使い、player5.0でも、文字色の変更が可能にしてみました。
下のurlは、そのサンプルです。前のTextFormat();を使った、動きと同じ動きだと思います。
但し、flaの保存が、Flash8までしかできないので、adさんのMXでは、下のURLをみながら、以下の説明文を参考に作ってみて下さい。

1)先ず、テキスト入力(下にある白枠)を作り、変数名を、inputとします。

2)出力用のダイナミックテキスト(灰色の中に隠れています)を作り、変数名を、outputとします。それを、MovieClip化します。
シンボル編集画面で、第二フレーム、第三フレーム、第四フレーム目に、キーフレームを配置し、其々の、テキストカラーを、yellow、red、blueとし、変数名が、outputになっているかどうか確認して下さい。
スクリプトレイヤーを作り、第一フレームに、
this.stop();
と記載し、最初は、止めておきます。

スクリプトレイヤーの上にフレーム名を記載する、フレームレイヤーを作り、
第二フレームに、yellow、第三フレームに、red、第四フレームに、blueと命名します。
これを、ステージ上に配置し、インスタンス名をmcとし、以下のクリップアクションを記載します。
onClipEvent (load) {
this.output="";//このMCの変数 outputの初値は、ブランク
}
onClipEvent (enterFrame) {
if(this._parent.Check=="yellow"){//シーンのスクリプトレイヤーに記載した、制御変数である、Checkに、yellowの文字列が代入だれたら、フレーム名 yellowに行って、停止する。
this.gotoAndStop("yellow");
}else if(this._parent.Check=="red"){//同様に、redなら、
this.gotoAndStop("red");
}else if(this._parent.Check=="blue"){//同様に、blueなら、
this.gotoAndStop("blue");
}else{//以上以外なら、第一フレームに戻って、停止する。この場合、記載しなくていいです。
this.gotoAndStop(1);
}
}

3)ボタン類を作りますが、

・ENTERボタンには、
on (release) {//_rootにあるインスタンス名 mcの中の、変数名 outputに対して、_rootの変数名 inputを代入する
this.mc.output=this.input;
}
・黄色のボタンには、
on (release) {
Check="yellow";//黄色のボタンが、押されたら、制御変数に、文字列 yellowを代入し、mcをフレーム名 yellowに動かして、停止させる
}
・赤色のボタンには、
on (release) {
Check="red";//赤色のボタンが押されたら、同様
}
・青色のボタンには、
on (release) {
Check="blue";
}
4)最後に、シーンのスクリプトレイヤーに、フレームアクションで、
var Check="";//制御変数の文字列の初期値は、ブランクとする

と記載して、終了です。

シーンのフレームにほとんどを記載するフレームアクションに比較し、あっちこっちにスクリプトを記載するので、少し、戸惑うかもしれませんが、MXでも有効だと思われる、クリップアクションを使って、記載してみました。
http://homepage2.nifty.com/joys/answers/textcolor_timeline.html
Response 09
2008年04月06日 (日) 17時18分> ad 
何度もすみません。
ほんとうにありがとうございます。
早速試してみたいと思います。
ほんとうにありがとうございました。
Response 10
2008年04月07日 (月) 20時20分> ad 
すみません、いきなりつまずきました
まずテキストカラーはどこで設定すればよいでしょうか?
スクリプトレイヤーはどのようにつくればよいでしょうか??
説明文の中に

onClipEvent (enterFrame) {
if(this._parent.Check=="yellow"){//シーンのスクリプトレイヤーに記載した、制御変数である、Checkに、yellowの文字列が代入だれたら、フレーム名 yellowに行って、停止する。

などのありますが、この日本語文字も入力するのでしょうか??
すみません、もしご覧になっておりましたら、教えていただきたいです。
Response 11
2008年04月08日 (火) 01時02分> joy 
adさん、
今晩は。
>まずテキストカラーはどこで設定すればよいでしょうか?
スクリプトレイヤーはどのようにつくればよいでしょうか??

以下、シンボル編集画面で、全ての作業を行います。
MXのユーザーインタフェースは、知らないのですが、ワークスペースをDefault(一番上のツールバーの「ウインドウ」→「ワークスペース」で出てきます)にし、ダイナミックテキストを選んで矩形を描いていれば、画面の左下の方に、プロパティというタグが見えるはずです。*テキストカラーは、「テキストの塗りカラー」という小さなプルダウンメニューがありますから、そこで、色を選択します。この場合、キーフレームを4つ作りますから、第一フレームのダイナミックテキストから順番に、黒、黄、赤、青となります。

この変数名 outputのダイナミックテキストを配置した、レイヤー名を、仮に、アウトプットとしたなら、その上に、(*通常のレイヤーを追加する方法で)新たにレイヤーを作り、そのレイヤー名を、スクリプトと名づけます。
これが、スクリプトレイヤーという意味です。


更に、スクリプトレイヤーの上に、新たなレイヤーを作り、レイヤー名をフレーム名とします。
第一フレームには、特にフレーム名をつけず、第二フレームから、yellow、red、blueと名づけます。

以上で、シンボル編集画面での作業が終わり、インスタンス名 mcの中身が出来たことになります。


>onClipEvent (enterFrame) {
if(this._parent.Check=="yellow"){//シーンのスクリプトレイヤーに記載した、制御変数である、Checkに、yellowの文字列が代入だれたら、フレーム名 yellowに行って、停止する。
などのありますが、この日本語文字も入力するのでしょうか??



//シーンのスクリプトレイヤーに記載した、制御変数である、Checkに、yellowの文字列が代入だれたら、フレーム名 yellowに行って、停止する。

これは、*コメント文と言い、Flashの動きには、一切、影響を与えませんが、記載してるスクリプトの意味が何かを、adさんに説明するために、記載してるだけです。
adさんがこれから、ご自分で、作成される際には、不要ですが、自分で、何を記載したのかを、後から参照するためには、記載しておいた方が、いいと思います。

尚、何かの参考書をお持ちだと思いますが、*テキストカラーの変更や、*レイヤーの追加の方法、*コメント文の記載方法は、どんな参考書にも、文字のみならず、絵も含めて、分かり易く、記載されているはずですから、ご覧になってください。ここで、文字だけで、説明するのは、なかなか、難しいですので。
Response 12
2008年04月11日 (金) 19時36分> ad 
お返事ありがとうございます。
初心者なもので、なにがなんだかわからず
質問してしまいました。
がんばってやってみます。

このページの先頭へ