2011-08-31 6 views
0

나는 4 * 4 격자를 가지고 있습니다. 그리드 주변에 16 개의 무비 클립이 흩어져 있습니다. 각 MovieClip은 40 * 40이며 드래그 할 수 있습니다. 사용자는 MovieClip을 격자로 드래그 앤 드롭 할 수 있습니다. 각 클립의 위치가 정확합니다. X = 0, Y = 0플래시 조각 퍼즐의 위치

클립 1 : X = 40, Y = 0

클립 2, X = 120, Y = 0

클립

클립 0 예컨대 3 : X = 160, Y = 0이

클립 15 : X = Y 160 =

모든 클립이 올바른 위치에있는 게임 완료 160. 따라서 게임을 쉽게 확인 할 수 있습니다. 루프와 ENTER_FRAME을 사용하여 모든 클립의 위치를 ​​모니터링하십시오.

해결할 수없는 작은 문제가 있습니다. 사용자가 클립을 끌면 올바른지 여부에 관계없이 그리드의 위치에 스냅됩니다. 이 경우 스냅 할 수있는 위치는 40의 배수가됩니다. 두 개의 클립이 한 위치에 찍힐 가능성이 있으며이를 피해야합니다. 클립을 (40,120)에 넣으면 다른 MovieClip을 놓을 수 없습니다. 실제로 나는이 위치가 점령되었다고 말하는 약간의 표시를 얻을 수 있어야합니다.

표시를 사용하여 MovieClip을 원래 위치로 되돌립니다.

어떻게 달성 할 수 있습니까? MovieClip의 등록 포인트는 겹쳐서 표시됩니다.

답변

2

16 개 필드의 직업에 대한 정보로 개체를 운반하십시오. 클립이있는 경우 적절한 속성을 true로 설정하십시오. 대안 : 맵시 솔루션은 단순히 INT var에 이진 합 사용하는 것입니다 : 처음 세 개의 위치를 ​​점유하는 경우

1 = first field 
2 = second field 
4 = third field 
8 = ... 

를, 당신의 합은 1 + 2 + 4 = 7 될 것입니다. 필드는 다음과 같이 점유하는 경우

당신 시험 :시

if ((SUM & testFieldNumber) == testFieldNumber) THEN occupied 

사용자는 클립에 고정 할 위치를 계산하는 데 필요한 마우스를 해제합니다. 개체 또는 이진 합계를 사용하여 필드가 사용되고 있는지 확인하십시오. 그렇다면 클립의 위치를 ​​이전 상태로 재설정하십시오. 항상

  • 스토어 :

    SUM -= fieldNumber 
    

    요약 : 클립이 필드를 떠나면

    SUM += fieldNumber 
    

    : 필드가 아직없는 경우, 당신은 당신의 개체 또는 binaray 합에 필드를 추가 각 클립의 마지막 유효 위치

  • 필드의 작업 저장 (개체 또는 이진 합계)
  • 사용자가 마우스를 놓을 때 가능한 클립 위치 (필드)를 계산하십시오.
  • 필드가 비어있는 경우 : 클립을 이동하고 필드 작업 (오브젝트 또는 bin 합계)을 저장하십시오. 마지막 유효 위치로 클립의 새 위치를 저장하십시오.
  • 필드가 점유하는 경우 : 과거의 위치로 클립을 이동
  • 클립이 과거의 위치가 필드 직업 목록 (객체 또는 빈 합) I 객체 메소드로 이동하는 것을 선호
+0

를 업데이트 떠난다. 나는 논리 AND OR 등등에 대해 약간 녹슬지 만, 나는 기본적인 생각을 가지고 있다고 생각한다. 이런 종류의 코드가 'int var and binary sum'을 사용하는지 여부에 대한 좋은 링크를 제공 할 수 있습니까? 샘플 코드가 있으시면 보내주십시오. 그 방법을 미래에 대해 연구하고 싶습니다. [email protected] –

+0

바이너리 합계를 사용하려면 비트 연산자의 개념을 이해할 필요가 없습니다. 나는 심지어 그들을 설명하기 위해 문서를 봐야 할 것이다. 기본적으로 하나의 숫자 만 가질 수 있으며 숫자에 특정 값이 포함되어 있는지 확인할 수 있습니다. 이렇게하려면 값이 2의 제곱이어야합니다. 유닉스 파일 사용 권한과 동일합니다. –