2009年5月20日水曜日

C# キャストとか

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

2009年5月19日火曜日

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

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

MySQLやってて で知ったこと

now() に数値をプラスすると、数値になる。
-- 普通
mysql> select now();
+---------------------+
| now()               |
+---------------------+
| 2009-05-19 18:06:04 |
+---------------------+
1 row in set (0.00 sec)

-- 数値で
mysql> select now() + 0;
+-----------------------+
| now() + 0             |
+-----------------------+
| 20090519180657.000000 |
+-----------------------+
1 row in set (0.00 sec)

-- 明日
mysql> select now() + 1000000;
+-----------------------+
| now() + 1000000       |
+-----------------------+
| 20090520180610.000000 |
+-----------------------+
1 row in set (0.00 sec)
っていうか、色々数値を突っ込んでみると数値になる?
mysql> SELECT 0x61;
+------+
| 0x61 |
+------+
| a    |
+------+
1 row in set (0.00 sec)

mysql> SELECT 0x61 + 1;
+----------+
| 0x61 + 1 |
+----------+
|       98 |
+----------+
1 row in set (0.00 sec)

2009年5月18日月曜日

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

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

2009年5月14日木曜日

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

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

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

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

2009年5月8日金曜日

TextField へのフォーカス回避

TextField(TextArea等も)へフォーカスしないようにするのは、マウス操作不可だけでは不十分。Tabキーによるフォーカスも回避しなければならない。
// 自分自身用
mouseEnabled  = false;
tabEnabled    = false;

// 回避したいインスタンスを含むなら
mouseChildren = false;
tabChildren   = false;

2009年5月7日木曜日

getterメソッドとsetterメソッド

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