投稿者 |
スレッド |
ひろゆき |
Åê¹ÆNo.46144 投稿日時: 2010-10-15 21:24 |
ちょんまげら 居住地: 東京砂漠 投稿: 4403
使用環境: 10.8.5 Flash Professional CS4/CS6/CC Safari 6.1
|
Re: カラーピッカーの表示色数について サンプルを探してきて、そのコピー&ペーストでしか対応できないので、 そこから目的に無理矢理合わせようとして、無茶苦茶になっている気がします。 目的が先で、それに応じて、必要な知識を何が何でも学習するんだという、 姿勢から始めた方が良さそうに思います。 例えば、今回の問題で言えば、 ColorPickerコンポーネントを216色のサンプル・コードがあって、 簡単にできちゃったから、それを使うしかない、 というところから出発しているのが、間違いの始まりでは? 「色数の多い選択をしたい」を目的を明確にしたうえで、 どのような選択肢があるのか、質問すべきだったのでは? 何も、パレット型のColorPickerを使う必要もないように思いますが。 第一、そんな大きなColorPickerを付けても、 表示領域が広すぎて使いものにならないのではないかと思いますし。 こういうカラーピッカーもありますね。 「 カラーピッカー」 「 Extended ColorChooser」 ---------------- 質問する際は、回答者に具体的な情報を与えてください。
|
|
|
ひろゆき |
Åê¹ÆNo.46145 投稿日時: 2010-10-15 21:30 |
ちょんまげら 居住地: 東京砂漠 投稿: 4403
使用環境: 10.8.5 Flash Professional CS4/CS6/CC Safari 6.1
|
Re: カラーピッカーの表示色数について ColorPickerコンポーネントは、確か横に6*3=18個しか並べられなかったと思いますが。 ---------------- 質問する際は、回答者に具体的な情報を与えてください。
|
|
|
tamachan55 |
Åê¹ÆNo.46146 投稿日時: 2010-10-15 21:33 |
半人前 居住地: 投稿: 44
使用環境: Win7,Flash CS4,
|
Re: カラーピッカーの表示色数について 返信ありがとうございます。 リンク先のExtended ColorChooser は使いやすそうですね これ以上、私の無知によりこのトピックが混乱すると申し訳ありませんので、以後、発言はひかえようと思います。 いままでご迷惑を掛けてすみませんでした
|
|
|
奥村 典史 |
Åê¹ÆNo.46147 投稿日時: 2010-10-15 21:34 |
常連 居住地: 大阪府(以前:東京都府中市 / 土日は大抵京都) 投稿: 69
使用環境: FlashCS5.5, WinXP,Win7(64bit),
単体テスト用に FlexSDK3.4, As3Unit
エディター FlashBuilder5
スクリプト ActionScript3.0
|
Re: カラーピッカーの表示色数について ひろゆきさんの言う事も支持しつつ どちらにしてもどうやって目的の色を生成するかは 必要な気がするのでさらに書きます。 引用: 幾つずつ増加してX軸は何個 Y軸は何個の色にしますか? 引用: 対角線で増加って・・・どういう意味でしょう? イメージできません・・・
|
|
|
奥村 典史 |
Åê¹ÆNo.46148 投稿日時: 2010-10-15 21:35 |
常連 居住地: 大阪府(以前:東京都府中市 / 土日は大抵京都) 投稿: 69
使用環境: FlashCS5.5, WinXP,Win7(64bit),
単体テスト用に FlexSDK3.4, As3Unit
エディター FlashBuilder5
スクリプト ActionScript3.0
|
Re: カラーピッカーの表示色数について あ、 トピック終わってる・・・
なんだか結局サンプルが欲しかっただけなのだろうか・・・
|
|
|
ひろゆき |
Åê¹ÆNo.46149 投稿日時: 2010-10-15 21:36 |
ちょんまげら 居住地: 東京砂漠 投稿: 4403
使用環境: 10.8.5 Flash Professional CS4/CS6/CC Safari 6.1
|
Re: カラーピッカーの表示色数について たぶん、その構成だと無理です。 RGBの軸が3つに対して、正方形だと2次元の組み合わせしかできないので。 こういうのは、きちんとリファレンスを読むべきですね。 「 ColorPicker - ActionScript 3.0 言語およびコンポーネントリファレンス」 よく読むと、 ColorPickerコンポーネントの横18個の値は変更できるみたいですね。 ていうか、できました。 ただ、正方形の配置は難しいですね。 import fl.controls.ColorPicker;
import fl.events.ColorPickerEvent;
var max:uint = 10;
var unit:uint = 0xFF/(max - 1);
var colors:Array = new Array();
for (var n:uint = 0; n < 2; n++) {
for (var b:uint = 0; b < max; b++) {
var cb:uint = unit*b;
for (var r:uint = 0; r < 5; r++) {
var cr:uint = unit*(r%5 + 5*n);
for (var g:uint = 0; g < max; g++) {
var cg:uint = unit*g;
var rgb:uint = cr << 16 | cg << 8 | cb;
colors.push(rgb);
}
}
}
}
var color:int = 0x000000;
var cp:ColorPicker = new ColorPicker();
cp.addEventListener(ColorPickerEvent.CHANGE, changeHandler);
cp.move(10, 10);
addChild(cp);
cp.colors = colors;
cp.selectedColor = color;
cp.setStyle("columnCount", 50);
function changeHandler(event:ColorPickerEvent):void {
var color:uint = event.color;
}
---------------- 質問する際は、回答者に具体的な情報を与えてください。
|
|
|
961832p |
Åê¹ÆNo.46153 投稿日時: 2010-10-16 19:49 |
常連 居住地: Akiruno-shi 投稿: 155
使用環境: :AS3: - Adobe Flex SDK, Eclipse, AIR GEAR - LB.Log AS3, Alcon2 :AS2: - AMES(ASDT, MTASC, Eclipse, swfmill) - Natural Entry Point Method - LB.Log, Zeroi Pro, Firefox, Chromium(Iron), IE ---------------- Pro,
|
Re: カラーピッカーの表示色数について もう終了してしまったようですが、今までカラーピッカーを使った事が無かったので自分も挑戦してみました。こういう機会じゃないと今後も使わなさそうなので(汗)。 ・スクリーンショット、テストページ
一つのカラーピッカーに収めようとするとパレット数がとても多くなってしまうので、色相のカラーピッカーと、明度&彩度のカラーピッカーの二つに分けています。 また、mayor さんに教えていただいたsketchbookライブラリを使うことで、HSVからRGBへ変換する部分もスッキリと記述することができました。
自環境がFlexなので以下のスクリプトは役に立たないかもしれませんが、全体の処理の流れみたいなものは掴めるかもしれません。考え方の一つとして参考になれば幸いです。 プログラミングにおいて2進数やビットの考えは大切な部分なので、面倒でつまらないかもしれませんが覚えておいて損は無いと自分は思います。 あとはリファレンスをじっくり読んで実践することに尽きるでしょうか。
【Main.as(AS3)】
package{
…省略…
//
import sketchbook.colors.ColorSB;
//
import my.Log;
import my.FlexDefaultComponents;
//========================================================================//
public class Main extends Application{
private const HUE_MAX:int = 360; // 色相の最大値
private const HUE_STEP:int = 4; // 色相の刻み値
private const S_B_MAX:int = 100; // 明度&彩度の最大値
private const S_B_STEP:int = 10; // 明度&彩度の刻み値
//
private var hue_cpicker:ColorPicker, s_b_cpicker:ColorPicker;
//--------------------------------------------------------------------//
public function Main() {
super();
FlexDefaultComponents.stylesInit();
Log.trace("i Main");
//
this.layout = "absolute";
this.setStyle("backgroundColor", 0xDEE2E2);
this.addEventListener(FlexEvent.APPLICATION_COMPLETE, app_complete);
}
//--------------------------------------------------------------------//
private function app_complete(a_event:FlexEvent):void{
Log.trace("i app_complete:" + a_event);
//
var acbar:ApplicationControlBar = new ApplicationControlBar();
acbar.dock = true;
var label:Label = new Label();
label.text = "HSVカラーピッカー(左が色相、右が明度&彩度)";
acbar.addChild(label);
//
var root_layout:HBox = new HBox();
root_layout.setStyle("paddingLeft", 8);
root_layout.setStyle("paddingTop", 8);
root_layout.setStyle("paddingRight", 8);
root_layout.setStyle("paddingBottom", 8);
root_layout.y = 8;
root_layout.percentWidth = root_layout.percentHeight = 100;
//色相カラーピッカー
hue_cpicker = new ColorPicker();
hue_cpicker.width = hue_cpicker.height = 80;
hue_cpicker.showTextField = false;
hue_cpicker.setStyle("openDuration", 70);
hue_cpicker.setStyle("closeDuration", 30);
var hue_css:CSSStyleDeclaration = new CSSStyleDeclaration();
hue_css.defaultFactory = function ():void{
this.columnCount = HUE_MAX / HUE_STEP / 6;
this.swatchHeight = this.swatchWidth = 40;
this.swatchBorderSize = this.swatchHighlightSize = 2;
this.swatchGridBorderSize = 1;
this.previewWidth = this.previewHeight = 0;
};
StyleManager.setStyleDeclaration(".cpicker_hue", hue_css, true);
hue_cpicker.setStyle("swatchPanelStyleName", "cpicker_hue");
hue_cpicker.addEventListener(ColorPickerEvent.CHANGE, hue_change);
hue_cpicker.addEventListener(DropdownEvent.CLOSE, hue_close);
//明度&彩度カラーピッカー
s_b_cpicker = new ColorPicker();
s_b_cpicker.width = s_b_cpicker.height = 80;
s_b_cpicker.showTextField = false;
s_b_cpicker.setStyle("openDuration", 70);
s_b_cpicker.setStyle("closeDuration", 30);
var s_b_css:CSSStyleDeclaration = new CSSStyleDeclaration();
s_b_css.defaultFactory = function ():void{
this.columnCount = S_B_MAX / S_B_STEP + 1;
this.swatchHeight = this.swatchWidth = 40;
this.swatchBorderSize = this.swatchHighlightSize = 2;
this.swatchGridBorderSize = 1;
this.previewWidth = this.previewHeight = 0;
};
StyleManager.setStyleDeclaration(".cpicker_s_b", s_b_css, true);
s_b_cpicker.setStyle("swatchPanelStyleName", "cpicker_s_b");
s_b_cpicker.addEventListener(DropdownEvent.CLOSE, s_b_close);
//色相のパレットデータを作って登録
var hsb:ColorSB = new ColorSB();
var hue_palette:Array = [];
for (var hue:int=0; hue<HUE_MAX; hue+=HUE_STEP) {
hsb.setHSB(hue, S_B_MAX, S_B_MAX);
hue_palette.push(hsb.value);
}
hue_cpicker.dataProvider = hue_palette;
hue_cpicker.selectedColor = hue_palette[0];
//配置
root_layout.addChild(hue_cpicker);
root_layout.addChild(s_b_cpicker);
this.addChild(acbar);
this.addChild(root_layout);
//色相カラーピッカーへCHANGEイベント送出
hue_cpicker.dispatchEvent(new ColorPickerEvent(ColorPickerEvent.CHANGE));
}
//--------------------------------------------------------------------//
private function hue_change(a_event:ColorPickerEvent):void{
Log.trace("i hue_change:" + a_event);
//選ばれた色相から、明度&彩度のパレットデータを作って登録
var hsb:ColorSB = new ColorSB();
var s_b_palette:Array = [];
var s:int, b:int;
for (b=0; b<=S_B_MAX; b+=S_B_STEP) {
for (s=0; s<=S_B_MAX; s+=S_B_STEP) {
hsb.setHSB(a_event.index*HUE_STEP, S_B_MAX-s, S_B_MAX-b);
s_b_palette.push(hsb.value);
}
}
s_b_cpicker.dataProvider = s_b_palette;
s_b_cpicker.selectedColor = s_b_palette[0];
}
//--------------------------------------------------------------------//
private function hue_close(a_event:DropdownEvent):void{
Log.trace("i hue_close:" + a_event);
//
s_b_cpicker.open();
}
private function s_b_close(a_event:DropdownEvent):void{
Log.trace("i s_b_close:" + a_event);
//
hue_cpicker.open();
}
//--------------------------------------------------------------------//
}
}
---------------- :961832p: - だんだんAS3に慣れてきた“なんちゃって”AMES使いの日曜プログラマー
|
|
|