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

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   迷える子羊の部屋【初心者専用】
     3色のグラデーションをそれぞれ3個のカラーピッカーで色を変える
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
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を提示するとか。


----------------
質問する際は、回答者に具体的な情報を与えてください。

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

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