2012-01-10 8 views
0

クラッタでアクタをアニメーション化しようとしていますが、存在するプロパティを入力すると何かがうまくいかなくなります。タイプのオブジェクトのClutterTexture 'を実行: '\ X83 \ XEC \ u0014 \ x89 \ xc6e \ XA1 \ u000c' のプロパティをバインドすることはできません:クラッタでアニメーションプロパティにアクセスできない

actor.animate(AnimationMode.LINEAR, 400, scale_x:2); 

はクラッタ-WARNING **

私は、このエラーが発生しますこのプロパティを持たない

私にはUnicode文字のように見えます。プロパティをバインドすることはできません「thisdoesntwork」:型のオブジェクト私は

actor.animate(AnimationMode.LINEAR, 400, thisdoesntwork:2); 

存在しないプロパティを入力すると はしかし、私は

クラッタ-WARNING **がはるかに理にかなってエラーが出ます「ClutterTexture」このプロパティ

を持っていない私は、この代替的なアプローチしようとしたとき、私は正確に同じ問題を得る:

どのように実際に存在するすべてのプロパティが混乱に転じるのですか。これを動作させるには何ができますか?

答えて

4

2ではなく、2.0の値を使用する必要があります.2は整数で、2.0は倍精度です。 Valaはバリデーションメソッドの型の安全性を提供できないため、注意する必要があります。

なぜあなたは存在するプロパティの動作を見ているのでしょうか?2は(32ビット)整数で2.0は(64ビット)の倍精度。これは少し単純化していますが、Cでどのくらいの経験があるのか​​わかりません(多分そうではありませんが、動的に型指定された言語から来るような間違いなので)...クラッターwell、va_arg)はdoubleを期待して64ビットのデータを解析しますが、32ビットしか提供しないので、次の引数の最初の32ビット(NULL)が含まれます。今度は、次の引数を解析しようとすると、間違った場所(引数に32ビット)から始まります。したがって、残りのNULLと何らかのゴミがスタックに残ってしまいます... Unsuprisingly、それはちょうど0の32ビットであるように起こるわけではありません。したがって、クラッタは、それがちょうど読み込まれた値== NULLではないかどうかをテストし、クラッタはヌルで終わる文字配列へのポインタを与えられたと考えますこれは文字列がCでどのように表現されるかです)。それは\ x83 \ xec \ u0014 \ x89 \ xc6e \ xa1 \ u000cというような場所にあるデータを読み込み、その名前のプロパティがあるかどうかをチェックします。そうではないので、あなたが見たエラーメッセージが表示されます。

ここで、存在しないプロパティを使用するように切り替えると、Clutterは引数(プロパティの名前)を解析し、存在しないことに気付きます(上の2番目のプロパティと同じように) 、エラーを出力します。

関連する問題