ログイン
メインメニュー
|
投稿者 |
スレッド |
tamachan55 |
Åê¹ÆNo.45968 投稿日時: 2010-9-29 22:55 |
半人前 居住地: 投稿: 44
使用環境: Win7,Flash CS4,
|
3色のグラデーションをそれぞれ3個のカラーピッカーで色を変える FLASH初心者です。flash cs4,0,as3.0で{3色のグラデーションをそれぞれ3個のカラーピッカーで色を変える}というのに挑戦してますが、1色を変えると他の2色が初期設定色に戻ってしまい、うまくいきません。 どなたかご教授いただければ幸いです。
import fl.controls.ColorPicker;
import fl.events.ColorPickerEvent;
var shape1:Shape=new Shape();
var w:int=550;
var h:int=400;
var color1:int = 0x000000;
var color2:int =0xFFFFFF ;
var color3:int = 0x999966;
shape1.graphics.lineStyle(1);
var type:String=GradientType.LINEAR;
var colors:Array=[color1,color2,color3];
var alphas:Array=[1, 1,1];
var ratios:Array=[0,100,255];
var mtrx:Matrix=new Matrix();
mtrx.createGradientBox(w,h,0,0,0);
mtrx.rotate(Math.PI/2);
var spread:String=SpreadMethod.PAD;
var interpolation:String="rgb";
var focalPointRatio:Number=0;
shape1.graphics.beginGradientFill(type,colors,alphas,ratios,mtrx,spread,interpolation,focalPointRatio);
shape1.graphics.drawRect(0,0,w,h);
shape1.graphics.endFill();
shape1.x=stage.stageWidth/2-w/2;
shape1.y=stage.stageHeight/2-h/2;
addChild(shape1);
var cp1:ColorPicker = new ColorPicker();
cp1.addEventListener(ColorPickerEvent.CHANGE, changeHandler);
cp1.move(10, 10);
addChild(cp1);
function changeHandler(event:ColorPickerEvent):void {
var color1:String=("0x"+ event.target.hexValue);
var color2:int;
var color3:int;
shape1.graphics.clear();
shape1.graphics.lineStyle(1);
var type:String=GradientType.LINEAR;
var colors:Array=[color1,color2,color3];
var alphas:Array=[1, 1,1];
var ratios:Array=[0,100,255];
var mtrx:Matrix=new Matrix();
mtrx.createGradientBox(w,h,0,0,0);
mtrx.rotate(Math.PI/2);
var spread:String=SpreadMethod.PAD;
var interpolation:String="rgb";
var focalPointRatio:Number=0;
shape1.graphics.beginGradientFill(type,colors,alphas,ratios,mtrx,spread,interpolation,focalPointRatio);
shape1.graphics.drawRect(0,0,w,h);
shape1.graphics.endFill();
shape1.x=stage.stageWidth/2-w/2;
shape1.y=stage.stageHeight/2-h/2;
}
var cp2:ColorPicker = new ColorPicker();
cp2.addEventListener(ColorPickerEvent.CHANGE, changeHandler2);
cp2.move(100, 10);
addChild(cp2);
function changeHandler2(event:ColorPickerEvent):void {
var color1:int;
var color2:String=("0x"+ event.target.hexValue);
var color3:int;
shape1.graphics.clear();
shape1.graphics.lineStyle(1);
var type:String=GradientType.LINEAR;
var colors:Array=[color1,color2,color3];
var alphas:Array=[1, 1,1];
var ratios:Array=[0,100,255];
var mtrx:Matrix=new Matrix();
mtrx.createGradientBox(w,h,0,0,0);
mtrx.rotate(Math.PI/2);
var spread:String=SpreadMethod.PAD;
var interpolation:String="rgb";
var focalPointRatio:Number=0;
shape1.graphics.beginGradientFill(type,colors,alphas,ratios,mtrx,spread,interpolation,focalPointRatio);
shape1.graphics.drawRect(0,0,w,h);
shape1.graphics.endFill();
shape1.x=stage.stageWidth/2-w/2;
shape1.y=stage.stageHeight/2-h/2;
}
var cp3:ColorPicker = new ColorPicker();
cp3.addEventListener(ColorPickerEvent.CHANGE, changeHandler3);
cp3.move(200, 10);
addChild(cp3);
function changeHandler3(event:ColorPickerEvent):void {
var color1:int;
var color2:int;
var color3:String=("0x"+ event.target.hexValue);
shape1.graphics.clear();
shape1.graphics.lineStyle(1);
var type:String=GradientType.LINEAR;
var colors:Array=[color1,color2,color3];
var alphas:Array=[1, 1,1];
var ratios:Array=[0,100,255];
var mtrx:Matrix=new Matrix();
mtrx.createGradientBox(w,h,0,0,0);
mtrx.rotate(Math.PI/2);
var spread:String=SpreadMethod.PAD;
var interpolation:String="rgb";
var focalPointRatio:Number=0;
shape1.graphics.beginGradientFill(type,colors,alphas,ratios,mtrx,spread,interpolation,focalPointRatio);
shape1.graphics.drawRect(0,0,w,h);
shape1.graphics.endFill();
shape1.x=stage.stageWidth/2-w/2;
shape1.y=stage.stageHeight/2-h/2;
}
|
|
|
ひろゆき |
Åê¹ÆNo.45970 投稿日時: 2010-9-29 23:01 |
ちょんまげら 居住地: 東京砂漠 投稿: 4403
使用環境: 10.8.5 Flash Professional CS4/CS6/CC Safari 6.1
|
Re: 3色のグラデーションをそれぞれ3個のカラーピッカーで色を変える スクリプトは実際に試されたものを 省略せずに記載すべきでしょう。 省略されている部分について、回答者が補足しなければならないのは、 回答者の負担が大きすぎます。 また、スクリプトについては、[code][/code]で囲みましょう。 ---------------- 質問する際は、回答者に具体的な情報を与えてください。
|
|
|
tamachan55 |
Åê¹ÆNo.45973 投稿日時: 2010-9-29 23:16 |
半人前 居住地: 投稿: 44
使用環境: Win7,Flash CS4,
|
Re: 3色のグラデーションをそれぞれ3個のカラーピッカーで色を変える 質問が不備ですみませんでした。 補完しましたので、よろしくお願いします。
|
|
|
ひろゆき |
Åê¹ÆNo.45975 投稿日時: 2010-9-29 23:28 |
ちょんまげら 居住地: 東京砂漠 投稿: 4403
使用環境: 10.8.5 Flash Professional CS4/CS6/CC Safari 6.1
|
Re: 3色のグラデーションをそれぞれ3個のカラーピッカーで色を変える 回答はきちんと読みましょう。 ---------------- 質問する際は、回答者に具体的な情報を与えてください。
|
|
|
tamachan55 |
Åê¹ÆNo.45977 投稿日時: 2010-9-29 23:46 |
半人前 居住地: 投稿: 44
使用環境: Win7,Flash CS4,
|
Re: 3色のグラデーションをそれぞれ3個のカラーピッカーで色を変える 重ね重ね御免なさい 自己解決できました。
|
|
|
ひろゆき |
Åê¹ÆNo.45978 投稿日時: 2010-9-29 23:52 |
ちょんまげら 居住地: 東京砂漠 投稿: 4403
使用環境: 10.8.5 Flash Professional CS4/CS6/CC Safari 6.1
|
Re: 3色のグラデーションをそれぞれ3個のカラーピッカーで色を変える どのように解決したのか残しておくべきだと思いますが。 まず、shapeは1つしかないので、shape1とすると、shape2, shape3 があるような錯覚に陥って 間違いやすくなる気がするので、shape としました。 また、ライブラリにColorPickerコンポーネントを入れてあることも明記すべきでしょう。 import fl.controls.ColorPicker;
import fl.events.ColorPickerEvent;
var shape:Shape = new Shape();
var w:int = 550;
var h:int = 400;
var color1:int = 0x000000;
var color2:int = 0xFFFFFF ;
var color3:int = 0x999966;
shape.graphics.lineStyle(1);
var type:String = GradientType.LINEAR;
var colors:Array = [color1, color2, color3];
var alphas:Array = [1, 1, 1];
var ratios:Array = [0, 100, 255];
var mtrx:Matrix = new Matrix();
mtrx.createGradientBox(w, h, 0, 0, 0);
mtrx.rotate(Math.PI/2);
var spread:String = SpreadMethod.PAD;
var interpolation:String = "rgb";
var focalPointRatio:Number = 0;
shape.graphics.beginGradientFill(type, colors, alphas, ratios, mtrx, spread, interpolation, focalPointRatio);
shape.graphics.drawRect(0, 0, w, h);
shape.graphics.endFill();
shape.x = stage.stageWidth/2 - w/2;
shape.y = stage.stageHeight/2 - h/2;
addChild(shape);
var cp1:ColorPicker = new ColorPicker();
cp1.addEventListener(ColorPickerEvent.CHANGE, changeHandler);
cp1.move(10, 10);
addChild(cp1);
cp1.selectedColor = color1;
function changeHandler(event:ColorPickerEvent):void {
//var color1:String = ("0x" + event.target.hexValue);
//var color2:int;
//var color3:int;
color1 = event.color;
update();
}
var cp2:ColorPicker = new ColorPicker();
cp2.addEventListener(ColorPickerEvent.CHANGE, changeHandler2);
cp2.move(100, 10);
addChild(cp2);
cp2.selectedColor = color2;
function changeHandler2(event:ColorPickerEvent):void {
//var color1:int;
//var color2:String = ("0x" + event.target.hexValue);
//var color3:int;
color2 = event.color;
update();
}
var cp3:ColorPicker = new ColorPicker();
cp3.addEventListener(ColorPickerEvent.CHANGE, changeHandler3);
cp3.move(200, 10);
addChild(cp3);
cp3.selectedColor = color3;
function changeHandler3(event:ColorPickerEvent):void {
//var color1:int;
//var color2:int;
//var color3:String = ("0x" + event.target.hexValue);
color3 = event.color;
update();
}
function update():void {
shape.graphics.clear();
shape.graphics.lineStyle(1);
var type:String = GradientType.LINEAR;
var colors:Array = [color1, color2, color3];
var alphas:Array = [1, 1, 1];
var ratios:Array = [0, 100, 255];
var mtrx:Matrix = new Matrix();
mtrx.createGradientBox(w, h, 0, 0, 0);
mtrx.rotate(Math.PI/2);
var spread:String = SpreadMethod.PAD;
var interpolation:String = "rgb";
var focalPointRatio:Number = 0;
shape.graphics.beginGradientFill(type, colors, alphas, ratios, mtrx, spread, interpolation, focalPointRatio);
shape.graphics.drawRect(0, 0, w, h);
shape.graphics.endFill();
shape.x = stage.stageWidth/2 - w/2;
shape.y = stage.stageHeight/2 - h/2;
}
---------------- 質問する際は、回答者に具体的な情報を与えてください。
|
|
|
永井勝則 |
Åê¹ÆNo.45979 投稿日時: 2010-9-30 0:14 |
職人 居住地: 白馬村 投稿: 796
使用環境: Windows 7 :Flash CS4: 10.6.8 :Flash CS5.5
|
Re: 3色のグラデーションをそれぞれ3個のカラーピッカーで色を変える 「3色のグラデーションのカラーを3個のカラーピッカーで変える」コードの例です。 ご参考まで。 // ステージにはcPicker1、cPicker2、cPicker3というインスタンス名の
// ColorPickerコンポーネントを内部に持つムービークリップのpickersを置く
import fl.events.ColorPickerEvent;
// グラデーションを描画するShape
var gradientBox:Shape = new Shape();
gradientBox.x = 100;
gradientBox.y = 100;
addChild(gradientBox);
// グラデーション作成に必要な変数を準備
var theWidth:uint = 100;
var theHeight:uint = 300;
var type:String = GradientType.LINEAR;
var matrix:Matrix = new Matrix();
matrix.createGradientBox(theHeight, theWidth);
var alphas:Array = new Array(1,1,1);
var ratios:Array = new Array(0,128,255);
// グラデーションを描画する関数、カラーの配列を取る
function drawGradient(colors:Array) {
gradientBox.graphics.beginGradientFill(type, colors, alphas, ratios, matrix);
gradientBox.graphics.drawRect(0, 0, theHeight, theWidth);
}
// 3つのカラーピッカーのカラー値を保持する変数
// 試しにランダムなカラーを代入
var picker1Col:uint = Math.random() * 0xFFFFFF;
var picker2Col:uint = Math.random() * 0xFFFFFF;
var picker3Col:uint = Math.random() * 0xFFFFFF;
// カラーピッカーにランダムなカラーを設定して、グラデーションを描画してみる
pickers.cPicker1.selectedColor = picker1Col;
pickers.cPicker2.selectedColor = picker2Col;
pickers.cPicker3.selectedColor = picker3Col;
drawGradient([picker1Col, picker2Col,picker3Col]);
// ColorPickerを3つ、子に持つムービークリップに
// changeイベントのイベントリスナーを登録する
pickers.addEventListener(ColorPickerEvent.CHANGE, onChange);
function onChange(evt:ColorPickerEvent):void {
var pickerName:String = evt.target.name;
switch (pickerName) {
case "cPicker1" :
picker1Col = evt.target.selectedColor;
break;
case "cPicker2" :
picker2Col = evt.target.selectedColor;
break;
case "cPicker3" :
picker3Col = evt.target.selectedColor;
break;
}
var cols:Array = [picker1Col,picker2Col,picker3Col];
drawGradient(cols);
}
---------------- 永井勝則: himco.jp :
|
|
|
tamachan55 |
Åê¹ÆNo.45980 投稿日時: 2010-9-30 0:22 |
半人前 居住地: 投稿: 44
使用環境: Win7,Flash CS4,
|
Re: 3色のグラデーションをそれぞれ3個のカラーピッカーで色を変える ありがとうございます。勉強になります。 私の解決コードは
import fl.controls.ColorPicker;
import fl.events.ColorPickerEvent;
var shape1:Shape=new Shape();
var w:int=550;
var h:int=400;
var color1:int = 0x000000;
var color2:int =0xFFFFFF ;
var color3:int = 0x999966;
shape1.graphics.lineStyle(1);
var type:String=GradientType.LINEAR;
var colors:Array=[color1,color2,color3];
var alphas:Array=[1, 1,1];
var ratios:Array=[0,100,255];
var mtrx:Matrix=new Matrix();
mtrx.createGradientBox(w,h,0,0,0);
mtrx.rotate(Math.PI/2);
var spread:String=SpreadMethod.PAD;
var interpolation:String="rgb";
var focalPointRatio:Number=0;
shape1.graphics.beginGradientFill(type,colors,alphas,ratios,mtrx,spread,interpolation,focalPointRatio);
shape1.graphics.drawRect(0,0,w,h);
shape1.graphics.endFill();
shape1.x=stage.stageWidth/2-w/2;
shape1.y=stage.stageHeight/2-h/2;
addChild(shape1);
var cp1:ColorPicker = new ColorPicker();
cp1.move(10, 10);
addChild(cp1);
var cp2:ColorPicker = new ColorPicker();
cp2.move(100, 10);
addChild(cp2);
var cp3:ColorPicker = new ColorPicker();
cp3.move(200, 10);
addChild(cp3);
cp1.addEventListener(ColorPickerEvent.CHANGE, changeHandler);
cp2.addEventListener(ColorPickerEvent.CHANGE, changeHandler);
cp3.addEventListener(ColorPickerEvent.CHANGE, changeHandler);
function changeHandler(event:ColorPickerEvent):void {
var color_1:uint=cp1.selectedColor;
var color_2:uint=cp2.selectedColor;
var color_3:uint=cp3.selectedColor;
shape1.graphics.clear();
shape1.graphics.lineStyle(1);
var type:String=GradientType.LINEAR;
var colors:Array=[color_1,color_2,color_3];
var alphas:Array=[1, 1,1];
var ratios:Array=[0,100,255];
var mtrx:Matrix=new Matrix();
mtrx.createGradientBox(w,h,0,0,0);
mtrx.rotate(Math.PI/2);
var spread:String=SpreadMethod.PAD;
var interpolation:String="rgb";
var focalPointRatio:Number=0;
shape1.graphics.beginGradientFill(type,colors,alphas,ratios,mtrx,spread,interpolation,focalPointRatio);
shape1.graphics.drawRect(0,0,w,h);
shape1.graphics.endFill();
shape1.x=stage.stageWidth/2-w/2;
shape1.y=stage.stageHeight/2-h/2;
}
です。 ひろゆきさんのスクリプトではプレビューするとカラーピッカーのボタン自体に初期設定色が反映されてますね。私のではカラーピッカー自体は3個とも黒です。この違いは何なのか考えてみたいと思います。 カラーピッカーの表示色は最大1024色表示できるらしいのですが、どうやればよいのでしょうか?新たに質問したほうが良いですか?
|
|
|
tamachan55 |
Åê¹ÆNo.45981 投稿日時: 2010-9-30 0:39 |
半人前 居住地: 投稿: 44
使用環境: Win7,Flash CS4,
|
Re: 3色のグラデーションをそれぞれ3個のカラーピッカーで色を変える ひろゆきさん、永井勝則さん 本日はありがとうございました。 大変勉強になりました。
|
|
|
ひろゆき |
Åê¹ÆNo.45982 投稿日時: 2010-9-30 0:49 |
ちょんまげら 居住地: 東京砂漠 投稿: 4403
使用環境: 10.8.5 Flash Professional CS4/CS6/CC Safari 6.1
|
Re: 3色のグラデーションをそれぞれ3個のカラーピッカーで色を変える 適度にタブ・インデントを入れるなどしないと、スクリプトが読みづらいです。 引用: tamachan55さんは書きました:
カラーピッカーの表示色は最大1024色表示できるらしいのですが、どうやればよいのでしょうか?新たに質問したほうが良いですか? 本来なら、別途質問すべきでしょうね。 最低でも、リファレンスくらいは読みましょう。 「 ColorPicker - ActionScript 3.0 言語およびコンポーネントリファレンス」 # colorsプロパティで指定するようです。 あるいは、1024色表示できるらしいという情報をどこで入手されたのか、 その情報が書かれたURLを提示するとか。 ---------------- 質問する際は、回答者に具体的な情報を与えてください。
|
|
|
|
|