[英]ipad: Drag a UITableViewCell from one UITableViewController and drop it into another
[英]Drag and Drop objects from one CCLayer to another
我的CCScene
有三層。 MainLayer
,其中包含GameLayer
和HUDLayer
。 這就是現在的樣子:
[ z-Order ] | [ Layer ]
==============================
3 ( Top Most ) | HUDLayer
2 ( Middle ) | GameLayer
1 ( Bottom ) | MainLayer
我已經加入觸摸聽眾( ccTouchBegan
, ccTouchMoved
和ccTouchEnded
我) MainLayer
其中要求GameLayer
的方法getTouchedObject( CCPoint p_Loc )
它返回被觸摸對象在該層中。
現在,我可以成功“觸摸” MainLayer
的特定對象。 現在,我要做的就是將觸摸的對象拖到HUDLayer
。 當我只使用一層時,我可以毫無問題地拖放不同的對象,但是實現CCLayer
的需要來了,所以我將主層分為三個不同的層。
答案不必是cocos2d-x。 我了解一點Obj-C,並且可以將Obj-C轉換為C ++,因此歡迎cocos2d答案。 提前致謝。
最簡單的方法可能是:
HoverLayer
或其他名稱的新CCLayer
。 這是為了模塊化。 HoverLayer
的子項HoverLayer
到同一位置。 用戶將不會“看到”任何更改。 HUDLayer
。 HoverLayer
移除精靈,然后將其添加到適當的圖層。 筆記:
HUDLayer
而不是HoverLayer
,但是您的類將很混亂。 GameLayer
上,則它GameLayer
會在HUDLayer
后面結束,因此必須將精靈移動到頂層。 我將在此處提供一個實現:
CCSprite* tmpSprite = getTouchedObject();
tmpSprite->retain();
tmpSprite->removeFromParentAndCleanup(false);
//do something here to get a pointer to you HUDLayer
//for example myHud = GameLayer->getChildByTag(HUD_TAG);
myHud->addChild(tmpSprite);
tmpSprite->release();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.