2009年5月20日水曜日

C# キャストとか

int型 から文字列
  1. String str = num.ToString();  
文字列から型 int
  1. int num = int.Parse(str);  

2009年5月19日火曜日

MySQL で小数点以下を「切り捨て」する

TRUNCATE(n, m)
n -- 任意の数値 m -- 切捨てる小数点以下の桁数
  1. mysql> SELECT TRUNCATE(1024.768, 0);  
  2. +-----------------------+  
  3. truncate(1024.768, 0) |  
  4. +-----------------------+  
  5. |                  1024 |  
  6. +-----------------------+  
  7. 1 row in set (0.02 sec)  
Oracle 等の TRUNC()は、桁数を省略できるようだけど(0とみなされる)、MySQLではできない様子。

MySQLやってて で知ったこと

now() に数値をプラスすると、数値になる。
  1. -- 普通  
  2. mysql> select now();  
  3. +---------------------+  
  4. | now()               |  
  5. +---------------------+  
  6. | 2009-05-19 18:06:04 |  
  7. +---------------------+  
  8. 1 row in set (0.00 sec)  
  9.   
  10. -- 数値で  
  11. mysql> select now() + 0;  
  12. +-----------------------+  
  13. | now() + 0             |  
  14. +-----------------------+  
  15. | 20090519180657.000000 |  
  16. +-----------------------+  
  17. 1 row in set (0.00 sec)  
  18.   
  19. -- 明日  
  20. mysql> select now() + 1000000;  
  21. +-----------------------+  
  22. | now() + 1000000       |  
  23. +-----------------------+  
  24. | 20090520180610.000000 |  
  25. +-----------------------+  
  26. 1 row in set (0.00 sec)  
っていうか、色々数値を突っ込んでみると数値になる?
  1. mysql> SELECT 0x61;  
  2. +------+  
  3. | 0x61 |  
  4. +------+  
  5. | a    |  
  6. +------+  
  7. 1 row in set (0.00 sec)  
  8.   
  9. mysql> SELECT 0x61 + 1;  
  10. +----------+  
  11. | 0x61 + 1 |  
  12. +----------+  
  13. |       98 |  
  14. +----------+  
  15. 1 row in set (0.00 sec)  

2009年5月18日月曜日

Tween が途中で止まってしまう

Tweenクラスを使っていると、途中でとまってしまうことがある。よくわからない現象だったんだけど、どうやら生成した Tween のインスタンスがガベージコレクションに掃除されてしまうのが問題らしい。 生成した Tween インスタンスは、そのままでも動いてくれるが、変数なり何なりに入れておかないと、すぐ掃除されてしまう様子。
  1. new Tween(ball, 'x', Regular.easeOut, ball.x , 300, 100, false);  
  2. new Tween(ball, 'y', Regular.easeOut, ball.y , 100, 100, false);  
でも、たとえば以下のように関数の中にローカル変数を定義して、そこに入れておいても、やっぱり掃除されてしまい、あまり状況は変わらない。
  1. private function run():void   
  2. {  
  3.     var t1:Tween = new Tween(ball, 'x', Regular.easeOut, ball , 300, 100, false);  
  4.     var t2:Tween = new Tween(ball, 'y', Regular.easeOut, ball , 100, 100, false);  
  5. }  
それならばとメンバ変数として定義し、そこにインスタンスを入れてあげてみた。これなら、クラスが破棄されない限り、生きていてくれるだろう。
  1. var t1:Tween;  
  2. var t2:Tween;  
  3. private function run():void   
  4. {  
  5.     t1 = new Tween(ball, 'x', Regular.easeOut, ball.x , 300, 100, false);  
  6.     t2 = new Tween(ball, 'y', Regular.easeOut, ball.y , 100, 100, false);  
  7. }  
こういうやり方が正しいのかはわからないし、他にもっとやるべきことはあるだろうけど。

2009年5月14日木曜日

Flash CS4 のコンポーネントで引っかかったところ

いつかはスッキリするんだと願って。 Q. 作ったコンポーネントを書き出しただけのはずなのに、コンポーネント内に設置したTextAreaやUIScrollbarなどが一緒に表示される。 A. ライブラリのシンボルのプロパティ、コンポーネント定義で「コンポーネントパネルに表示」にチェックが入っているのが原因。TextAreaやScrollPane等も同様にはずしてあげる必要がある(デフォルトでチェックが入っている様子)。ライブラリ内に含まれるすべてのコンポーネントが表示されるようになるので、書き出し対象以外の作成したコンポーネントも表示されてしまう。 何のための設定なんだろうか。 Q. コンポーネント定義をしても、ライブラリのアイコンが変わらない。 A. 先の「コンポーネントパネルに表示」にチェック。もしくはパラメータを追加すると変わる。ライブラリ上でアイコンが変わらなくても、SWCの書き出しを行えば、しっかりアイコンは変わる。 よくわからない... Q. コンポーネントインスペクタで設定した値が適用されない。 A. コンポーネントインスペクタで設定する値は、インスペクタがあるいずれかのパラメータを更新したときにのみ適用される。それらのパラメータは、内部で初期値を持っておかないといけない。

クラス名を変数で指定してインスタンスを作る

よく忘れるので。
  1. var myClassName:String = 'MyClass';  
  2. var myClass:Class      = getDefinitionByName(myClassName) as Class;  
  3. var my                 = new myClass();  

2009年5月8日金曜日

TextField へのフォーカス回避

TextField(TextArea等も)へフォーカスしないようにするのは、マウス操作不可だけでは不十分。Tabキーによるフォーカスも回避しなければならない。
  1. // 自分自身用  
  2. mouseEnabled  = false;  
  3. tabEnabled    = false;  
  4.   
  5. // 回避したいインスタンスを含むなら  
  6. mouseChildren = false;  
  7. tabChildren   = false;  

2009年5月7日木曜日

getterメソッドとsetterメソッド

よく文法を忘れるのでメモ。
  1. package   
  2. {  
  3.     public class MyClass   
  4.     {  
  5.         private var _itemName:String = "hoge";  
  6.           
  7.         public function get itemName():String   
  8.         {  
  9.             return _itemName;  
  10.         }  
  11.           
  12.         public function set itemName(value:String):void  
  13.         {  
  14.             _itemName = value;  
  15.         }  
  16.     }  
  17. }  
メソッド名とプロパティ名は一緒じゃダメ。こういうときに、privateなプロパティ名にアンダースコアをつけるの(何て言うんだったかな?)が便利だと思ってしまう。