2012-01-10 8 views
0

Clutter에서 액터에 애니메이션을 적용하려고하지만 존재하는 속성을 입력하면 문제가 발생합니다. 속성을 바인딩 할 수 없습니다 것은 '\ X83 \ XEC \ u0014 \ x89 \ xc6e \ XA1 \ u000c'형식 'ClutterTexture'의 개체를 할 Clutter에서 animate-properties에 액세스 할 수 없습니다.

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

클러-WARNING ** 날이 오류를 제공합니다 이 부동산을 가지고 있지 않습니다.

나에게 유니 코드 문자처럼 보입니다. 속성을 바인딩 할 수 없습니다 'thisdoesntwork': 유형의 개체 나 속성을 입력 할 때 그러나, 내가 훨씬 더 의미를

클러 - 경고 ** 만드는 오류가

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

존재하지 않습니다 'ClutterTexture'이 속성

이없는 나는이 다른 접근하려고 할 때 나는 똑같은 문제를 얻을 :

실제로 존재하는 모든 속성이 어떻게 엉망으로 변환 되나요?이 기능을 사용하려면 어떻게해야합니까?

답변

4

값이 2.0이 아니라 2를 사용해야합니다. 2는 정수이고, 2.0은 이중입니다. Vala는 variadic 메서드에 대한 형식 안전을 제공 할 수 없으므로주의해야합니다.

존재하는 속성에 대한 동작을 보는 이유는 내 생각에 2가 (32 비트) 정수이고 2.0이 (64 비트) double이라는 사실과 관련이 있습니다. . 이것은 약간을 단순화하고 있습니다. 그러나 C로 얼마나 많은 경험을했는지는 알지 못합니다. (이것은 동적 유형의 언어에서 오는 실수의 일종이기 때문에 아마도 많지 않을 것입니다.) ... 잘, va_arg)는 double을 기대하므로 64 비트 데이터를 파싱하지만 32 비트 만 제공하므로 다음 인수 (NULL)의 처음 32 비트가 포함됩니다. 이제 다음 인수를 구문 분석하기 시작하면 잘못된 위치 (인수로 32 비트)에서 시작하여 나머지 NULL을 얻고 스택에 어떤 쓰레기가 생겼는지 ... Unsuprisingly, 그것은 단지 32 비트의 0 일 뿐이므로 클러 터 테스트에서 방금 읽은 값이 == NULL인지 아닌지 확인하고 클러 터가 null로 끝나는 문자 배열에 대한 포인터를 제공한다고 생각할 때 C에서 문자열이 표시되는 방식). 그 위치에있는 데이터를 읽습니다.이 위치는 \ x83 \ xec \ u0014 \ x89 \ xc6e \ xa1 \ u000c 일 뿐이며 그 이름을 가진 속성이 있는지 확인합니다. 존재하지 않기 때문에, 당신이 본 오류 메시지를 내 보냅니다.

존재하지 않는 속성을 사용하도록 전환하면 Clutter는 인수 (속성 이름)를 구문 분석하고 존재하지 않는다고 인식합니다 (위의 두 번째 속성과 마찬가지로) , 오류를 내 보냅니다.