2013-06-17 3 views
0

마우스 이벤트를 스 와이프 이벤트 (터치 스크린)로 변환하려고하는데 시간과 시간이 지나면 마우스 이벤트를 수행하는 방법을 알 수 없습니다 . 여기 마우스 이벤트를 드래그하여 터치 스크린 이벤트로 변환합니다.

내 코드입니다 : 나는 내 인벤토리를 클릭하고 A 항목, 내가 화면에서 원하는 드래그 할 수 있습니다를 선택하면 내 컴퓨터에서

public function DraggedItem(stageRef:Stage, grabbedItem:Object){ 

      this.stageRef = stageRef; 
      toolbar = Engine.toolbar; 
      usableItems = Engine.usableItems; 
      inv = Engine.inv; 
      puzzle = Engine.puzzle; 
      player = Engine.player; 
      linesData = Engine.linesData; 

      inv.draggingItem = true; 
      Mouse.hide(); 

      itemRef = getDefinitionByName(grabbedItem.displayName.toLowerCase()+"Proper"); 
      draggedItem = new itemRef; 
      stageRef.addChild(draggedItem); 
      draggedItem.displayName = grabbedItem.displayName; 
      if (grabbedItem.lookTag) 
       draggedItem.lookTag = grabbedItem.lookTag; 
      draggedItem.x = mouseX + x; 
      draggedItem.y = mouseY + y; 
      draggedItem.scaleX = itemScale; 
      draggedItem.scaleY = itemScale; 
      stageRef.addEventListener(MouseEvent.MOUSE_MOVE, dragItem, false, 0, true); 
      stageRef.addEventListener(Event.ENTER_FRAME, itemHitTest, false, 0, true); 
      draggedItem.addEventListener(MouseEvent.CLICK, itemClick, false, 0, true); 

     } 

     private function dragItem(e:MouseEvent):void{ 
      draggedItem.x = mouseX + x; 
      draggedItem.y = mouseY + y; 
     } 

(항목은 마우스가, 그리고 마우스는 숨김).

그래서 저는 터치 스크린으로 변환하려고합니다. "mouseX"대신 "event.stageX"를 사용하려고했지만 작동하지 않았습니다. MouseEvent를 TransformGestureEvent로 대체하려고 시도했지만 작동하지 않았습니다.

인벤토리에서 내 항목을 클릭하면 항목이 화면의 가운데 구석에 머물면서 이동할 수 없습니다. (그냥 안드로이드에 대한 어도비 에어로 내보낼 때 일어나는 일이야, swf로 내보내는 중이라면 괜찮아.)

내가 어떻게 할 수 있는지 알고 있니?

여기에 문제의 비디오는 다음과 같습니다

가 대단히 감사합니다 uploaded.net/file/lkwqsgm7!

+0

TouchEvent를 사용하지 않는 이유는 무엇입니까? – SzRaPnEL

+0

드래그 한 항목을 제대로 인스턴스화하지 못하면 대괄호가 필요합니다. 'new itemRef()' – BadFeelingAboutThis

+0

'itemHitTest' 메소드가 표시되지 않습니다. – BadFeelingAboutThis

답변

0

플래시의 제스처를 사용해 볼 수 있습니다. 당신은 실제로 단지 위치 B에 위치 A에서 개체를 드래그하는 경우

Multitouch.inputMode = MultitouchInputMode.GESTURE; //you need to enable gestures 

stageRef.addEventListener(TransformGestureEvent.GESTURE_SWIPE , onSwipe); 
function onSwipe (e:TransformGestureEvent):void{ 
    if (e.offsetX == 1) { 
     //swiped right 
     draggedItem.x += someValue; 
    }else{ 
     //swiped left 
     draggedItem.x -= someValue; 
    } 
} 

명심가, 스 와이프 이벤트 만 일반적으로 스 와이프입니다, 이것은하지 슬쩍하지만, 음 ... 드래그합니다. 나는 당신이 실제로 성취하려는 것을 분명하지 않습니다.

멀티 터치를 원할 경우 MouseEventsTouchEvents으로 변경하십시오. Mouse_Down은 TOUCH_BEGIN과 같고 마우스 업은 TOUCH_END와 같습니다.

+0

문제라고 생각했지만 실제로는 아닙니다. 내 문제는 다음과 같습니다. 인벤토리에서 내 항목을 클릭하면 항목이 화면의 가운데 모퉁이에 머물면서 이동할 수 없습니다. (그냥 안드로이드에 대한 어도비 에어로 내보낼 때 일어나는 일이야, swf로 내보내는 중이라면 괜찮아.) 문제의 비디오는 다음과 같습니다. http://uploaded.net/file/lkwqsgm7 – user2421975

+0

아무도 문제가 될지 모릅니다. – user2421975

관련 문제