我在程序中有一个类通知,我在这个项目的其他类中使用它。当我在 Visual Studio 2010 中运行时没问题。但是当使用 Cygwin 构建时会出现此错误“错误:'not' token 之前预期的 unqualified-id”这是我的类文件 .h
#ifndef __TOAST_H__
#define __TOAST_H__
#include "cocos2d.h"
#include "cocos-ext.h"
USING_NS_CC_EXT;
USING_NS_CC;
#define LOADING 1
class notificationTOAST: public CCLayer{
public:
notificationTOAST(char* bg, char* txt, float y, float duringTime, CCObject* target);
notificationTOAST(char* bg, char* txt, float y, float duringTime, CCObject* target,char* imgLoading);
notificationTOAST(char* bg, char* txt, float duringTime, CCObject* target);
notificationTOAST(char* bg, char* txt, float x, float y, float duringTime, CCObject* target);
notificationTOAST(char* bg, char* txt,float x, float y, float duringTime, CCObject* target,char* imgLoading);
void end();
virtual void loop(float id);
private:
float duringTime;
CCObject* target;
};
#endif
文件 .cpp
#include "Toast.h"
#include "Constant.h"
notificationTOAST::notificationTOAST(char* bg, char* txt, float y, float duringTime, CCObject* target){
this->target = target;
CCLabelTTF *text = CCLabelTTF::create(txt, font_arial, 20);
text->setPosition(ccp(SCREEN_W/2, y));
addChild(text,1);
CCScale9Sprite* background = CCScale9Sprite::create(bg);
background->setContentSize(CCSizeMake(text->getContentSize().width + 40, text->getContentSize().height +20));
background->setPosition(ccp(SCREEN_W/2, y));
addChild(background);
this->duringTime = duringTime;
if(duringTime > 0){
schedule(schedule_selector(notificationTOAST::loop));
}
this->runAction(CCFadeIn::create(0.3f));
this->autorelease();
}
notificationTOAST::notificationTOAST(char* bg, char* txt, float x, float y, float duringTime, CCObject* target){
this->target = target;
CCLabelTTF *text = CCLabelTTF::create(txt, font_arial, 20);
text->setPosition(ccp(x, y));
addChild(text,1);
CCScale9Sprite* background = CCScale9Sprite::create(bg);
background->setContentSize(CCSizeMake(text->getContentSize().width + 40, text->getContentSize().height +20));
background->setPosition(ccp(x, y));
addChild(background);
this->duringTime = duringTime;
if(duringTime > 0){
schedule(schedule_selector(notificationTOAST::loop));
}
this->runAction(CCFadeIn::create(0.3f));
this->autorelease();
}
notificationTOAST::notificationTOAST(char* bg, char* txt, float y, float duringTime, CCObject* target,char* imgLoading){
this->target = target;
CCLabelTTF *text = CCLabelTTF::create(txt, font_arial, 20);
CCSprite* loading = CCSprite::create("progress.png");
int w = text->getContentSize().width + loading->getContentSize().width + 5;
int h = loading->getContentSize().height;
loading->setPosition(ccp(SCREEN_W/2 - w/2 + loading->getContentSize().width/2,y));
CCActionInterval* rotage = CCRotateBy::create(2.0f, 360);
loading->runAction(CCRepeatForever::create(rotage));
addChild(loading,1,LOADING);
text->setPosition(ccp(SCREEN_W/2 - w/2 + loading->getContentSize().width + text->getContentSize().width/2 + 5, y));
addChild(text,1);
CCScale9Sprite* background = CCScale9Sprite::create("bgloading.png");
background->setContentSize(CCSizeMake(w + 10, h));
background->setPosition(ccp(SCREEN_W/2, y));
addChild(background);
this->duringTime = duringTime;
if(duringTime > 0){
schedule(schedule_selector(notificationTOAST::loop));
}
this->runAction(CCFadeIn::create(0.1f));
this->autorelease();
}
notificationTOAST::notificationTOAST(char* bg, char* txt,float x, float y, float duringTime, CCObject* target,char* imgLoading){
this->target = target;
CCLabelTTF *text = CCLabelTTF::create(txt, font_arial, 20);
CCSprite* loading = CCSprite::create("progress.png");
int w = text->getContentSize().width + loading->getContentSize().width + 5;
int h = loading->getContentSize().height;
loading->setPosition(ccp(SCREEN_W*2/3 - w/2 + loading->getContentSize().width/2,y));
CCActionInterval* rotage = CCRotateBy::create(2.0f, 360);
loading->runAction(CCRepeatForever::create(rotage));
addChild(loading,1,LOADING);
text->setPosition(ccp(SCREEN_W*2/3 - w/2 + loading->getContentSize().width + text->getContentSize().width/2 + 5, y));
addChild(text,1);
CCScale9Sprite* background = CCScale9Sprite::create("bgloading.png");
background->setContentSize(CCSizeMake(w + 10, h));
background->setPosition(ccp(SCREEN_W*2/3, y));
addChild(background);
this->duringTime = duringTime;
if(duringTime > 0){
schedule(schedule_selector(notificationTOAST::loop));
}
this->runAction(CCFadeIn::create(0.1f));
this->autorelease();
}
notificationTOAST::notificationTOAST(char* bg, char* txt, float duringTime, CCObject* target){
this->target = target;
CCLabelTTF *text = CCLabelTTF::create(txt, font_arial, 20);
CCScale9Sprite* background = CCScale9Sprite::create(bg);
background->setPosition(ccp(SCREEN_W/2,SCREEN_H- background->getContentSize().height/2));
addChild(background);
int w = background->getContentSize().width;
int h = background->getContentSize().height;
text->setPosition(ccp(SCREEN_W + text->getContentSize().width/2, SCREEN_H-h/2));
addChild(text,1);
CCFiniteTimeAction* seq = CCSequence::create(CCMoveBy::create(20,CCPointMake(-(SCREEN_W + text->getContentSize().width + 50),0)),
CCMoveTo::create(0,CCPointMake(SCREEN_W + text->getContentSize().width/2, SCREEN_H-h/2)),
NULL);
text->runAction(CCRepeatForever::create((CCActionInterval*)seq));
this->duringTime = duringTime;
if(duringTime > 0){
schedule(schedule_selector(notificationTOAST::loop));
}
this->autorelease();
}
void notificationTOAST::loop(float id){
if(duringTime == -1) return;
duringTime -= id;
if(duringTime <= 0){
duringTime = 10;
//this->stopAllActions();
CCLayer* aLayer = (CCLayer*) target;
aLayer->removeChild(this);
}
}
void notificationTOAST::end(){
CCLayer* aLayer = (CCLayer*) target;
aLayer->removeChild(this);
}
我在其他函数中调用它如下:
notificationTOAST *not = new notificationTOAST("","Loading...",SCREEN_W/2 ,SCREEN_H/2+50,3,GameController::getInstance(),"");
not->setTag(100);
GameController::getInstance()->addChild(not);`