为什么添加上while语句,程序运行后就像卡住了一样

看来我发得不够全面,代码如下:

void HelloWorld::onMouseDown(Event *event){
   i=0;
   if(i==0){
	   this->asd();
   }
}

 void HelloWorld::onMouseUp(Event *event){
    i=1;
 }

 void HelloWorld::asd(){
	while(i==0){		
		Sprite* node3=Sprite::create("ty.png");
		node3->setPosition(node2->getPosition());
		this->addChild(node3);
		auto moveTo = MoveTo::create(1, Vec2(300,300));
		node3->runAction(moveTo);
		SimpleAudioEngine::getInstance()->playEffect("yingxiao.mp3", false, 1.0, 1.0, 1.0);
		this->scheduleOnce(CC_SCHEDULE_SELECTOR(HelloWorld::popScene), 300);			
	}
 }

 void HelloWorld::popScene(float t)
 {
 }

完整代码已阅
开除猿籍+10086

1赞

看完我都体会到马斯克猿宇宙的加密货币有多奥妙了

完整代码已阅
开除猿籍+10000000000000000000000086

opengl的while显示循环吗? 别这么干

当你鼠标按下去的一瞬间,应该就注定死循环了

完整代码已阅
开除猿籍+100000000086

和你发没发完整代码,真的没有关系,你的循环内部,i没做任何变更,这必然是个死循环,何为死循环?

或者这么说,由于单线程的关系,你永远没有机会再去执行 onMouseUp 这个方法了。

1赞

我上次看到这种死循环还是在上次,你要想鼠标按下后不断创建,可以用定时器跟节点池

i不行换成j试试

2赞

建议回炉重造

这写的编译器不报错么???

把你这个while(i==0)改成if(i==0) 然后把这函数丢到update里面去就能满足你的要求了

一秒创建60个 等下楼主又该发帖了

不至于1秒创建60个sprite加一个简单的动作而已 完全不卡

1赞

这代码。好漂亮,难得的人才

完全代码已阅:你也配姓猿!

1赞

你们好像对调戏c++新手这事很上心?

啥年代了,还要c++写cocos

重点在“调戏”,而不是“c++” :rofl: