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

パスワード:


パスワード紛失

新規登録
メインメニュー
メイン
   とにかくFLASH【FLASHに関して全般】
     NumericStepperでの奇数表示
投稿するにはまず登録を

スレッド表示 | 古いものから 前のトピック | 次のトピック | 下へ
投稿者 スレッド
野中文雄
Åê¹ÆNo.28129
投稿日時: 2006-8-23 16:39
ちょんまげら
居住地: 東京
投稿: 4531
使用環境:
CS5.5 .6.8 Vista Home Premium (SP1)
Re: NumericStepperでの奇数表示
NumericStepper.checkValidValue()メソッドに、修正を加えてみました。

F-site「NumericStepperで奇数を表示する
引用:
ごんざえもんさんは書きました:
NumericStepperクラスのcheckValidValue()が犯人ぽいですね


----------------
 

永井勝則
Åê¹ÆNo.28044
投稿日時: 2006-8-21 8:29
職人
居住地: 白馬村
投稿: 796
使用環境:
Windows 7 :Flash CS4:
10.6.8 :Flash CS5.5
Re: NumericStepperでの奇数表示
情報ありがとうございます。
いただいた情報を元に探ってみます。

数値が増える、減るというのは仕様とその理解が難しいです。


----------------
永井勝則:
himco.jp :

ひろゆき
Åê¹ÆNo.28009
投稿日時: 2006-8-20 7:45
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 6.1
Re: NumericStepperでの奇数表示
CustomValidator.validate() の OddNumbersOnly.as では、
NumericStepper の value が奇数がどうかを検証しているのだと思うのですが、
ごんざえもんさんが書かれているように、
NumericStepperクラス の checkValidValue() で、
すでに、NumericStepper の value が奇数でないように設定されてしまっているような気がします。

なので、NumericStepperクラス の function checkValidValue() の部分を修正しないことには
改善されないように思います。

trace(checkValidValue(3));
// 2 と出力

function checkValidValue(val:Number):Number {
	var stepS:Number = 2;
	var minVal:Number = 1;
	var maxVal:Number = 99;
	var initDiv:Number = val / stepS;
	var roundD:Number = Math.floor(initDiv);
	if (val > minVal and val < maxVal) {
		if (initDiv - roundD == 0) {
			return val;
		} else {
			var tmpV:Number = Math.floor(val / stepS);
			var stepDownV:Number = tmpV * stepS;
			if ((val - stepDownV >= stepS / 2 && maxVal >= stepDownV + stepS && minVal <= stepDownV - stepS)
				|| (val + stepS == maxVal && maxVal - stepDownV - stepS > 0.00000000000001)) {
				stepDownV += stepS;
			}
			return stepDownV;
		}
	} else {
		if (val >= maxVal) {
				return maxVal;
		} else {
			return minVal;
		}
	}
}

minimum(minVal) が stepSize(stepS) の倍数である場合には、正常ですが、
そうでない場合には、おかしなことになっているようです。


引用:
しかし、2回そのサンプル通りに行ってみたものの、アプリケーションは
うんともすんとも言わず、動作しません。

サンプル通り作りました。
ただ、バインディングのところで少し躓きましたけど。

サンプル

import mx.controls.NumericStepper;

my_nstep.minimum = 1;
my_nstep.maximum = 99;
my_nstep.stepSize = 1;
my_nstep.value = my_nstep.minimum;

function dataIsInvalid(evt) {
	if (evt.property == "text") {
		status.text = evt.messages;
	}
}
function dataIsValid(evt) {
	if (evt.property == "text") {
		status.text = "OK";
	}
}
textLabel.addEventListener("valid", dataIsValid);
textLabel.addEventListener("invalid", dataIsInvalid);

サンプル右側は、my_nstep.stepSize = 2; になっています。
また、OddNumbersOnly.as もflaと同階層に用意してあります。


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

永井勝則
Åê¹ÆNo.27995
投稿日時: 2006-8-19 15:37
職人
居住地: 白馬村
投稿: 796
使用環境:
Windows 7 :Flash CS4:
10.6.8 :Flash CS5.5
Re: NumericStepperでの奇数表示
情報ありがとうございます。
その後、FlashのヘルプでNumericStepperで検索して表示される
CustomValidator.validate()という項目を見つけまして、
その中の”カスタム検証クラスを作成および使用するには”
というサンプルに、NumericStepperを使って、奇数かどうかを検証する例が
あるのを発見しました。
しかし、2回そのサンプル通りに行ってみたものの、アプリケーションは
うんともすんとも言わず、動作しません。
同じ内容のLiveDocsの英語版に何か修正でも入っているかと思い
見てみましたが、修正は入っていませんでした。
このサンプルが具体的に、今回の疑問に応えるものかどうかは不明ですが、
もしよろしかったら、このサンプルを試していただいて、
動くかどうかお知らせいただけたらありがたいです。

NumericStepper、odd numbers などで検索してみましたが、
有用な情報は見つかりませんでした。


----------------
永井勝則:
himco.jp :

ごんざえもん
Åê¹ÆNo.27977
投稿日時: 2006-8-18 17:26
常連
居住地: 北かんとー
投稿: 123
使用環境:
Windows XP SP3
Windows7
Windows VISTA
MacOSX10.6
FlashMX2004
Flash8 pro
Flash CS6 (体験版…)
Re: NumericStepperでの奇数表示
NumericStepperクラスのcheckValidValue()が犯人ぽいですね


----------------
gonzaemon

ひろゆき
Åê¹ÆNo.27976
投稿日時: 2006-8-18 17:07
ちょんまげら
居住地: 東京砂漠
投稿: 4403
使用環境:
10.8.5

Flash Professional CS4/CS6/CC

Safari 6.1
Re: NumericStepperでの奇数表示
インスペクタでの指定だけでなく、スクリプトで指定しても、
同じような結果になるようです。

NumericStepperコンポーネント (インスタンス名: my_nstep)
import mx.controls.NumericStepper;

my_nstep.minimum = 1;
my_nstep.maximum = 99;
my_nstep.stepSize = 2;
my_nstep.value = my_nstep.minimum;
trace(my_nstep.nextValue);

traceの出力結果は 3 なのに、nextButton を押すと 2 になっちゃいますね。

import mx.controls.NumericStepper;

my_nstep.minimum = 5;
my_nstep.maximum = 99;
my_nstep.stepSize = 2;
my_nstep.value = 9;

なぜか、10 と表示されます。


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

永井勝則
Åê¹ÆNo.27967
投稿日時: 2006-8-18 11:29
職人
居住地: 白馬村
投稿: 796
使用環境:
Windows 7 :Flash CS4:
10.6.8 :Flash CS5.5
NumericStepperでの奇数表示
NumericStepperコンポーネントを使って、クリックすると
1から99まで2づつ増える、奇数表示を行いたいのですが、
なぜかできません。
パラメータで、
maximum 99
minimum 1
stepSize 2
を指定すると、できそうなものですが、表示されるのは、
1,2,4,6,8....です。
ちなみに、偶数は、
minimumを2に指定すると表示可能です。


----------------
永井勝則:
himco.jp :

スレッド表示 | 古いものから 前のトピック | 次のトピック | トップ

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