如何对从数组中获取并显示在屏幕上的精灵执行拖放操作? [英] How to perform drag and drop operation on sprite fetched from array and present on screen ?

查看:45
本文介绍了如何对从数组中获取并显示在屏幕上的精灵执行拖放操作?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想在这些图像上执行拖放操作.

I want to perform drag and drop operation on these image.

如何通过以下代码实现这一目标.

How can i make it possible with the following code.

void storeLocation::changescene()
{

this->removeAllChildren();
//CCDirector::sharedDirector()->replaceScene(storeLocation::scene());

CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize();
CCPoint origin = CCDirector::sharedDirector()->getVisibleOrigin();

//CCScene* scene=CCScene::create();
    storeLocation *layer = storeLocation::create();
    CCSprite *k=CCSprite::create("background.png");
    this->addChild(k,0);
    k->setPosition(ccp(visibleSize.width/2+ origin.x, visibleSize.height/2 + origin.y));
    CCMenuItemImage *pCloseItem = CCMenuItemImage::create(
                                    "CloseNormal.png",
                                    "CloseSelected.png",
                                    this,
                                    menu_selector(storeLocation::menuCloseCallback));

pCloseItem->setPosition(ccp(origin.x + visibleSize.width - pCloseItem->getContentSize().width ,
                            origin.y + pCloseItem->getContentSize().height/2));
pCloseItem->setScale(1.5);
// create menu, it's an autorelease object
CCMenu* pMenu = CCMenu::create(pCloseItem, NULL);
pMenu->setPosition(CCPointZero);
this->addChild(pMenu, 1);

        this->addChild(pMenu, 1);
        this->setTouchEnabled(true);











int l=5;
int posx=0,posy=0;


int count=0,r,j=-1,i=0,flag=0;
int x=20;
int b[30],a[30];
while(count<=5)
{
    srand(time(0));

    r=rand()%x+1;
    flag=checktag(b,r,j);
    if(flag==1)
    {


    b[i]=r;
    i++;
    count++;
    j++;

    }

}

            int t;


CCObject* jt=NULL;

CCARRAY_FOREACH(images, jt)
    {
           // CCSize winSize = CCDirector::sharedDirector()->getWinSize();
            //float i=winSize.width;

        CCSprite *image = dynamic_cast<CCSprite*>(jt);
        t=image->getTag();
        for(i=0;i<l;i++)
        {
            if(t==b[i])
            {
                this->addChild(image);
        image->setPosition(ccp(100+posx,100));
        posx=posx+120;


            }}}

推荐答案

要将图像从一个点拖放到屏幕上的另一点,您必须使用触摸委托方法

To drag and drop images from one point to another on screen you have to use touch delegate methods

bool ccTouchBegan(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent);
void ccTouchMoved(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent);
void ccTouchEnded(cocos2d::CCTouch *pTouch, cocos2d::CCEvent *pEvent);

使用ccTouchBegan方法在用户触摸时检测图像,为此,您可以将所有图像对象存储在数组中,并通过使用for循环来检查触摸是否在任何图像的正上方.

Detect image on user touch in ccTouchBegan method, for this you can store all image objects in a array and check if touch is in rect of any image by using for loop.

要在ccTouchMoved中通过用户触摸更改触摸图像的位置(将触摸图像对象保存在全局对象中)来移动图像.

To move the image with user touch change position of touched image(save touched image object in a global object) in ccTouchMoved.

然后在ccTouchEnded方法中执行删除图像时想要做的任何事情.

And in ccTouchEnded method do whatever you want to do on droping image.

这篇关于如何对从数组中获取并显示在屏幕上的精灵执行拖放操作?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆