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

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   迷える子羊の部屋【初心者専用】
     カラーピッカーの表示色数について
投稿するにはまず登録を

スレッド表示 | 新しいものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
ひろゆき
Åê¹Æ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軸でBが増加して、Y軸でRが増加しつつ

幾つずつ増加してX軸は何個
Y軸は何個の色にしますか?

引用:
対角線でGが増加

対角線で増加って・・・どういう意味でしょう?
イメージできません・・・
奥村 典史
Åê¹Æ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使いの日曜プログラマー

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

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