2011-09-28 6 views
3

동일한 무비 클립의 두 무비 클립 인스턴스가 무대에 배치되고 하나가 플래시에서 가로로 뒤집 으면 ... 어느 것이 뒤집어 졌는지 감지 할 수있는 방법이 있습니까? 코드에서 가로로? ScaleX는 변경되지 않은 것으로 보입니다.무비 클립 감지가 스테이지에서 가로로 뒤집 힙니다.

코드를 통하지 않고 Flash UI (편집 -> 좌우 뒤집기)를 사용하여 MovieClip을 가로로 뒤집습니다.

+0

처음부터 MovieClip을 어떻게 뒤집 었습니까? – sberry

+0

미안하지만 좀 더 구체적이어야합니다. FLA 라이브러리에 연결된 상위 클립이 있습니다. SWC로 내보내지며 코드에서 액세스됩니다. 코드는이 연결된 부모 클립을 스테이지에 추가합니다. 부모 클립에는 FLASH IDE에서 두 개의 자식 클립이 있습니다. 하나는 뒤집 혔고 ([편집]> [가로로 뒤집기]) 다른 하나는 가로로 뒤집 힙니다. 코드를 통해 어떻게 구별 할 수 있는지 알아낼 수 없습니다. – prettymuchbryce

답변

5

시도 :

function isFlippedHorizontally(obj:DisplayObject):Boolean 
{ 
    return obj.transform.matrix.a/obj.scaleX == -1; 
} 

trace(isFlippedHorizontally(yourObject)); 

편집 :
나는 개체의 scaleX를 차지해야; 지금 조정. 또한

:

import fl.motion.MatrixTransformer; 

function isFlippedHorizontally(obj:DisplayObject):Boolean 
{ 
    return MatrixTransformer.getSkewYRadians(obj.transform.matrix)/Math.PI == 1; 
} 

trace(isFlippedHorizontally(yourObject)); 

편집 : 수직 수평으로 반전 대신에 이성을 상실 대한
마지막 예를 실수로 계산을했다. 이 소형화 및 단순화가의를 위해

+0

+1이 나를 위해 일했습니다. – Marty

+0

개체를 대칭 이동하고 크기를 조정 한 경우'obj.transform.matrix.a/obj.scaleX <0;'을 (를) 확인하는 것이 맞습니까? –

0

는 좀 더 fireeyedoy의 솔루션을 좋아하지만 당신은 또한 몇 가지의 BitmapData 비교와 함께 할 수 있습니다 : 이것은 당신의 무비 클립이 왼쪽 상단 정렬되어 있다고 가정한다

var bmd1:BitmapData = new BitmapData(mc1.width, mc1.height); 
var bmd2:BitmapData = new BitmapData(mc2.width, mc2.height); 
var cbmd1:BitmapData = new BitmapData(mc1.width, mc1.height); 
var cbmd2:BitmapData = new BitmapData(mc2.width, mc2.height); 

var cmatrix1:Matrix = new Matrix(); 
var cmatrix2:Matrix = new Matrix(); 

cmatrix1.tx = -mc1.x; 
cmatrix1.ty = -mc1.y; 

cmatrix2.tx = -mc2.x; 
cmatrix2.ty = -mc2.y; 

bmd1.draw(mc1); 
bmd2.draw(mc2); 

cbmd1.draw(this, cmatrix1); 
cbmd2.draw(this, cmatrix2); 


if(cbmd1.compare(bmd1)) 
{ 
    trace("mc1 is flipped!"); 
} 
else if(cbmd2.compare(bmd1)) 
{ 
    trace("mc2 is flipped!"); 
} 

. 그렇지 않다면 매트릭스를 그리는 동안 적절한 tx와 ty 값을 매트릭스에 추가해야합니다.

관련 문제