2011-12-16 2 views
1

색상 = 특정 색상인지 확인한 다음 적절하게 반응하고 싶습니다. 이것은 플래시 AS3에서 수행됩니다.Actionscript 3에서 문장이있는 경우 오브젝트의 색상을 확인하십시오.

내가 가진 한 코드는 오류없이 실행되지만 작동하지 않습니다

(객체 인 cal_mc) if(cal_mc.color == 0x0000FF) { p1score = p1score + 25;

입니다. 누구나 if 문에 대해 내가 뭘 잘못하고 있는지 말할 수 있습니까? 가능한 한 간단하게 코드를 유지하는 것이 좋습니다.

답변

4

내가 이해하는 한, 코드에 MovieClip 개체 (cal_mc는 MovieClip)를 사용하고 있습니다.

짧은 대답은 : 그래서 첫 번째 조건이 실패 MovieClip에 프로퍼티 "컬러"가 없습니다.

긴 대답 : 프로퍼티 "색상"MovieClip을에 없다

var custom:MovieClip = new MovieClip(); 
custom.potato = "I am a potato!"; // creates a new property "potato" and assigns it the value of "I am a potato". 
trace(custom.potato); // outputs "I am a potato"; 

: 그 코드가 실행되는 동안 그들은 속성을 정의 할 수 있습니다 의미 있도록 정의에 의해

무비 클립은 동적 객체 따라서 이론 상태에서는 조건문이 거짓이지만 사실상 플래시는 아무런 오류도 발생시키지 않습니다. MovieClip에는 런타임에 속성이 할당 될 수 있으므로 Flash에서는이를 알 수 없습니다. "색상"을 정의하지 않은 경우 어딘가에 있습니다.

몇 솔루션입니다 :

  • 중 하나가 color 재산 때 올바른 값을 지정하려면 원하는 그래픽을 그릴 수 color 재산과 몇 가지 방법을 포함 할 것이다 MovieClip과 논리를 확장하는 사용자 정의 클래스를 만들 그림이 완성되었습니다. BitmapbitmapData에서 MovieClipBitmap에 객체를 렌더링하고, (간단한 모양의 모든 픽셀은 같은 색의 때문에) 한 후 제 1 픽셀을 샘플링 - 당신의 MovieClip 만약
  • 은 간단한 모양, 나는 그것이 가정입니다 . 여기

후자에 대한 코드입니다 : (조정이 필요할 수 있습니다 코드, 그것의 개요)

function sampleColorFromDisplayObject(display:DisplayObject):uint 
{ 
    var bd:BitmapData = new BitmapData(display.width, display.height, false, 0xFF0000); 
    bd.draw(display, new Matrix()); 
    var color:uint = bd.getPixel(0, 0); 
    bd.dispose(); 
    return color; 
} 

하면 해당 때문에 가능한 다양한 모양과 크기에,이 코드가 필요할 수 있습니다 점에 유의 일부 모양으로 의도 한대로 작동하지 않을 수 있습니다. bitmapData의 크기를 크게하고 플래시 IDE에 정의 된 특정 유형의 원과 모양을 고려하여 첫 번째 픽셀을 샘플링하여 가능한 많은 양의 모양으로 작업하도록했습니다.

+0

코드를 사용하거나 IDE에서 색상 변환을 설정 한 경우를 대비하여이 대답을 확장하여 'movieclip.transform.colorTransform.color' 속성을 언급 할 것입니다. – package

관련 문제