bool MCFaceBox::init(const char *aFaceFilepath, const char *aBoxFilepath) { do { CCImage *aFaceImage = new CCImage; CC_BREAK_IF(! aFaceImage); CCImage *aBoxImage = new CCImage; CC_BREAK_IF(! aBoxImage); CCTexture2D *aFaceTexture = new CCTexture2D; CC_BREAK_IF(! aFaceTexture); CCTexture2D *aBoxTexture = new CCTexture2D; CC_BREAK_IF(! aBoxTexture); CC_BREAK_IF(! aFaceImage->initWithImageFile(aFaceFilepath)); CC_BREAK_IF(! aBoxImage->initWithImageFile(aBoxFilepath)); CC_BREAK_IF(! aFaceTexture->initWithImage(aFaceImage)); CC_BREAK_IF(! aBoxTexture->initWithImage(aBoxImage)); return init(aFaceTexture, aBoxTexture); } while (0); return false; }
MapControl::MapControl( const RawTile& tile ): m_tBeginPos(CCPointZero) { setTouchEnabled(true); m_bIsNew = true; CCSize size = CCDirector::sharedDirector()->getWinSize(); m_pSprite = NULL; m_Map.initPhysicMap(size.width,size.height,tile,(void*)this); m_firstEnd.tv_sec = m_firstEnd.tv_usec = 0; CCImage* pImage = m_Map.getBgImage(); CCTexture2D* pTexture = new CCTexture2D(); pTexture->initWithImage(pImage); m_pSprite = CCSprite::createWithTexture(pTexture); m_pSprite->setPosition(ccp(size.width/2, size.height/2)); float winw = size.width; //获取屏幕宽度 float winh = size.height;//获取屏幕高度 float spx = m_pSprite->getTextureRect().getMaxX(); float spy = m_pSprite->getTextureRect().getMaxY(); m_pSprite->setScaleX(winw/spx); //设置精灵宽度缩放比例 m_pSprite->setScaleY(winh/spy); m_pSprite->retain(); m_pControlLayer = NULL; m_bMutiTouch = false; m_fMutiDistance = 0.0; m_offsetX = m_offsetY = 0.0; m_nTouches = 0; m_dScale = 1.0; }
ToyBrick* ToyLayer::CreateBrick_Circle() { int num = CommonHelper::GetRandomNum(1, 30); //image && texture char path[255]; sprintf(path, "Images/ToyBrick/Circle/%d.png", num); CCImage *img = new CCImage(); img->autorelease(); if (!img->initWithImageFile(path, cocos2d::CCImage::kFmtPng)) { return NULL; } CCTexture2D *texture = new CCTexture2D(); texture->autorelease(); if (!texture->initWithImage(img)) { return NULL; } // ToyBrick *brick = ToyBrick::create(); CCSize size = texture->getContentSize(); brick->Init(texture, CCRectMake(0, 0, size.width, size.height)); brick->SetAsCircle(64); return brick; }
int Bitmap::handler_method_create_sprite(int bitmap_instance ,void* image) { Bitmap* bitmap = (Bitmap*)bitmap_instance; CCSprite* sp = NULL; CCImage* ccimage = (CCImage*)image; if (image) { CCTexture2D* texture = new CCTexture2D; texture->autorelease(); texture->initWithImage(ccimage); sp = CCSprite::createWithTexture(texture); CCAssert(sp,"f**k! image file error!"); bitmap->p->m_width = sp->getContentSize().width; bitmap->p->m_height = sp->getContentSize().height; } else { sp = CCSprite::create(); sp->setContentSize(CCSizeMake(bitmap->p->m_width,bitmap->p->m_height)); } //sp->getTexture()->setAliasTexParameters(); sp->retain(); bitmap->p->m_emuBitmap = sp; delete ccimage; return 0; }
void ChatWidget::setRecHead(std::string *head) { float bw = 70; float bh = 70; if(head == 0 || head->size() == 0) return; if(m_toLabel) m_toLabel->setVisible(false); if(m_toHead && m_toHead->getParent()){ m_toHead->removeFromParentAndCleanup(true); m_toHead = 0; } CCImage *img = new CCImage; img->initWithImageData((void*)head->c_str(),head->size(), CCImage::kFmtUnKnown); CCTexture2D *texture = new CCTexture2D; texture->initWithImage(img); delete img; m_toHead = CCSprite::create(); m_toHead->initWithTexture(texture); CCSize headSize = m_toHead->getContentSize(); m_toHead->setScaleX(60 / headSize.width); m_toHead->setScaleY(60 / headSize.height); m_toButton->CCNode::addChild(m_toHead); m_toHead->setAnchorPoint(ccp(0.5,0.5)); m_toHead->setPosition(ccp(bw/2,bh/2)); }
AnimatedCell::AnimatedCell(int cellX, int cellY, int spacing, const char* pngFileName) { this->setSpace(spacing); this->setPngFileName(pngFileName); animation_ = CCAnimation::create(); CCImage* image = new CCImage(); image->initWithImageFile(pngFileName); CCTexture2D* texture = new CCTexture2D(); texture->initWithImage(image); oneWidth_ = texture->getPixelsWide() / spacing; oneHeight_ = texture->getPixelsHigh(); for (int i=0; i<spacing; i++) { animation_->addSpriteFrameWithTexture(texture, CCRectMake(i*oneWidth_, 0, oneWidth_, oneHeight_)); } CCSpriteFrame* frm = ((CCAnimationFrame*)(animation_->getFrames()->objectAtIndex(0)))->getSpriteFrame(); this->initWithSpriteFrame(frm); animation_->setDelayPerUnit(0.5f); animate_ = CCRepeatForever::create(CCAnimate::create(animation_)); setCell(cellX, cellY); }
JNIEXPORT void JNICALL Java_game_mobile_infinity_FacebookManager_jniCallbackPicture(JNIEnv* env, jobject thiz, jstring jid , jbyteArray jimage) { const char *id = env->GetStringUTFChars( jid, 0); CCString* cfbID = CCString::createWithFormat("%s",id); int len = env->GetArrayLength(jimage); char* byteData = (char*)malloc(len); env->GetByteArrayRegion(jimage,0,len,(jbyte*)byteData); CCImage* imf = new CCImage(); imf->initWithImageData(byteData,len); imf->autorelease(); CCTexture2D* pTexture = new CCTexture2D(); pTexture->initWithImage(imf); pTexture->autorelease(); CCSprite *sprit = CCSprite::createWithTexture(pTexture); Facebook_Manager::sharedInstance()->Callback_Picture(cfbID, sprit); env->ReleaseStringUTFChars( jid, id); }
ToyBrick* DancingBoneLayer::CreateArm() { //image && texture char path[255]; sprintf(path, "Images/DancingBone/arm.png"); CCImage *img = new CCImage(); img->autorelease(); if (!img->initWithImageFile(path, CCImage::kFmtPng)) { return NULL; } CCTexture2D *texture = new CCTexture2D(); texture->autorelease(); if (!texture->initWithImage(img)) { return NULL; } // ToyBrick *brick = ToyBrick::create(); CCSize size = texture->getContentSize(); brick->Init(texture, CCRectMake(0, 0, size.width, size.height)); //vector (24, 102) CCPointArray *vector = CCPointArray::create(4); vector->addControlPoint(ccp(-12, -50)); vector->addControlPoint(ccp(12, -50)); vector->addControlPoint(ccp(12, 50)); vector->addControlPoint(ccp(-12, 50)); brick->SetAsPolygon(vector); return brick; }
CCTexture2D* Util::getGrayTexture(const char* filename){ typedef enum { RED = 0, GREEN = 1, BLUE = 2, ALPHA = 3 } PIXELS; CCImage *image = new CCImage(); image->initWithImageFile(filename); unsigned char* pixels = image->getData(); int len = image->getDataLen(); uint32_t *p = (uint32_t *)pixels; for(int i=0;i<len;i++){ uint8_t *rgbaPixel = (uint8_t *) &p[i]; //uint32_t gray = 0.3 * rgbaPixel[RED] + 0.59 * rgbaPixel[GREEN] + 0.11 * rgbaPixel[BLUE]; uint32_t gray = 1.2*rgbaPixel[RED] + 1.0*rgbaPixel[GREEN] + 0.0*rgbaPixel[BLUE]; // set the pixels to gray rgbaPixel[RED] = gray; rgbaPixel[GREEN] = gray; rgbaPixel[BLUE] = gray; } CCTexture2D* texture = new CCTexture2D(); texture->autorelease(); texture->initWithImage(image); image->release(); return texture; }
void AskAsFriendDialog::finish() { LangDef *lang = ResourceMgr::getInstance()->getLangDef(); BasButton *okButton = new BasButton; okButton->setButtonInfo(lang->getStringById(StringEnum::Ok).data(),"fonts/uifont24.fnt","default","buttonbg", CCSizeMake(0,0)); okButton->setClickCB(m_okListener,m_okFunc); this->addChild(okButton); okButton->setBottomMargin(m_edgeSize); okButton->setBottom("parent",uilib::Bottom); okButton->setHorizontal("parent",0.75); BasButton *rejectButton = new BasButton; rejectButton->setButtonInfo(lang->getStringById(StringEnum::Reject).data(),"fonts/uifont24.fnt","default","buttonbg", CCSizeMake(0,0)); rejectButton->setClickCB(m_rejectListener,m_rejectFunc); this->addChild(rejectButton); rejectButton->setBottomMargin(m_edgeSize); rejectButton->setBottom("parent",uilib::Bottom); rejectButton->setHorizontal("parent",0.25); BasWidget *headWidget; if(!m_askHead.empty()){ CCImage *img = new CCImage; img->initWithImageData((void*)m_askHead.c_str(),m_askHead.size(), CCImage::kFmtUnKnown); CCTexture2D *texture = new CCTexture2D; texture->initWithImage(img); delete img; CCSprite *sprite = CCSprite::create(); sprite->initWithTexture(texture); headWidget = new BasNodeDelegateWidget(sprite); this->addChild(headWidget); headWidget->setHorizontal("parent",0.5); headWidget->setVertical("parent",0.3); }else{ CCSprite *sprite = CCSprite::createWithSpriteFrameName("headdefault.png"); headWidget = new BasNodeDelegateWidget(sprite); this->addChild(headWidget); headWidget->setHorizontal("parent",0.5); headWidget->setVertical("parent",0.3); } m_askWord.insert(0," "); TextScrollArea *area = new TextScrollArea; area->setTheme("",""); area->setTextInfo(m_askWord,getSystemFont(),40,ccWHITE); this->addChild(area); area->setLeft("parent",uilib::Left); area->setRight("parent",uilib::Right); area->setLeftMargin(10); area->setRightMargin(10); area->setTop(headWidget->getName(),uilib::Bottom); area->setBottom(rejectButton->getName(),uilib::Top); }
void EaseSpriteDemo::onEnter() { CCLayer::onEnter(); // Example: // You can create a sprite using a Texture2D CCTexture2D* tex = new CCTexture2D(); UIImage* pImage = new UIImage(); if(pImage->initWithContentsOfFile(CCFileUtils::fullPathFromRelativePath(s_pPathGrossini))) { tex->initWithImage(pImage); m_grossini = CCSprite::spriteWithTexture(tex); m_grossini->retain(); } tex->release(); delete pImage; // Example: // Or you can create an sprite using a filename. PNG and BMP files are supported. Probably TIFF too m_tamara = CCSprite::spriteWithFile(s_pPathSister1); m_tamara->retain(); m_kathia = CCSprite::spriteWithFile(s_pPathSister2); m_kathia->retain(); addChild( m_grossini, 3); addChild( m_kathia, 2); addChild( m_tamara, 1); CGSize s = CCDirector::sharedDirector()->getWinSize(); m_grossini->setPosition( CGPointMake(60, 50) ); m_kathia->setPosition( CGPointMake(60, 150) ); m_tamara->setPosition( CGPointMake(60, 250) ); CCLabelTTF* label = CCLabelTTF::labelWithString(title().c_str(), "Arial", 32); addChild(label); label->setPosition( CGPointMake(s.width/2, s.height-50) ); CCMenuItemImage *item1 = CCMenuItemImage::itemFromNormalImage(s_pPathB1, s_pPathB2, this, menu_selector(EaseSpriteDemo::backCallback) ); CCMenuItemImage *item2 = CCMenuItemImage::itemFromNormalImage(s_pPathR1, s_pPathR2, this, menu_selector(EaseSpriteDemo::restartCallback) ); CCMenuItemImage *item3 = CCMenuItemImage::itemFromNormalImage(s_pPathF1, s_pPathF2, this, menu_selector(EaseSpriteDemo::nextCallback) ); CCMenu *menu = CCMenu::menuWithItems(item1, item2, item3, NULL); menu->setPosition( CGPointZero ); item1->setPosition( CGPointMake( s.width/2 - 100,30) ); item2->setPosition( CGPointMake( s.width/2, 30) ); item3->setPosition( CGPointMake( s.width/2 + 100,30) ); addChild(menu, 1); }
CCSprite* XieziLayer::generateSnapshot(){ CCSize mainSize=S_RM->getSizeWithName("xiezi_webview_size"); CCPoint mainPoint=S_RM->getPositionWithName("xiezi_main"); CCSprite* snapshot=(CCSprite*)this->getChildByTag(kTagSnapshot); const char* data=m_webView->callWebWithJs("getCanvasBase64Data()"); int length=(int)strlen(data); if(length>0){ string pngData=StringUtils::base64Decode(data, (int)strlen(data)); CCImage* img=new CCImage(); img->autorelease(); img->initWithImageData(const_cast<char*>(pngData.c_str()), (int)pngData.length()); CCTexture2D *texture = new CCTexture2D(); texture->initWithImage(img); texture->autorelease(); if (snapshot) { snapshot->setTexture(texture); }else{ snapshot= CCSprite::createWithTexture(texture); snapshot->setPosition(mainPoint); snapshot->setTag(kTagSnapshot); if (mainSize.width!=snapshot->getContentSize().width) { snapshot->setScale(mainSize.width/snapshot->getContentSize().width); } this->addChild(snapshot); } }else{ if (!snapshot) { snapshot=CCSprite::createWithSpriteFrameName("tianzige.png"); snapshot->setPosition(mainPoint); CCLabelTTF* label=CCLabelTTF::create(m_hanzi->getzi().c_str(), "KaiTi.ttf", 400.0); label->setColor(ccc3(100,53,14)); label->setPosition(ccp(mainSize.width/2, mainSize.height/2)); snapshot->addChild(label); snapshot->setTag(kTagSnapshot); this->addChild(snapshot); } } return snapshot; }
void CMainCityUI::imageLoadSuccessCallBack(string sTag, vector<char>* pBuffer) { CCImage* img = new CCImage; img->initWithImageData((unsigned char*)pBuffer->data(), pBuffer->size()); CCTexture2D* texture = new CCTexture2D(); texture->initWithImage(img); CLayout* headPart = (CLayout*)m_ui->findWidgetById("head_part"); CCSprite* head = (CCSprite*)headPart->getChildByTag(15); // head->removeFromParent(); //head->setTexture(texture); string path = HttpLoadImage::getInstance()->getStoragePath("download/fbImg",sTag.c_str())+".jpg"; string buff(pBuffer->begin(), pBuffer->end()); CCLOG("path: %s", path.c_str()); FILE *fp = fopen(path.c_str(), "wb+"); fwrite(buff.c_str(), 1, pBuffer->size(), fp); fclose(fp); // CCSprite *headbg = (CCSprite*)(m_ui->findWidgetById("headbg")); // CCClippingNode *clip = CCClippingNode::create(); // CCSprite *fbimg = CCSprite::createWithTexture(texture); // clip->addChild(fbimg); // // clip->setPosition(headbg->getPosition()); // clip->setContentSize(CCSizeMake(110,110)); // // static ccColor4F red ={1,0,1}; // float radius = 106; // const int nCount = 200; // const float angle = 2.0f* (float)M_PI/nCount; // CCPoint circle[nCount]; // for(int i=0; i<nCount; i++) // { // float radian = i*angle; // circle[i].x = radius * cosf(radian); // circle[i].y = radius * sinf(radian); // } // CCDrawNode *stencil= CCDrawNode::create(); // stencil->drawPolygon(circle,nCount,red,0,red); // clip->setStencil(stencil); // m_ui->addChild(clip); CCSprite *headBg = (CCSprite *)(headPart->findWidgetById("headbg")); CCSprite *headSpr = MakeFaceBookHeadToCircle(CCSprite::createWithTexture(texture)); headSpr->setTag(15); headSpr->setPosition(headBg->getPosition()); headPart->addChild(headSpr); head->removeFromParent(); img->release(); }
bool MainMenuBtnLayer::init() { bool bRet = false; do { // Super init first CC_BREAK_IF(!CCLayer::init()); CCSize size = CCDirector::sharedDirector()->getWinSize(); CCImage menufile; menufile.initWithImageFile("Buttons.png"); CCTexture2D *menuTexture = new CCTexture2D(); menuTexture->initWithImage(&menufile); CCMenuItemSprite *startgameitem = CCMenuItemSprite::create(CCSprite::createWithTexture(menuTexture, CCRectMake(6, 2, 166, 28)), CCSprite::createWithTexture(menuTexture, CCRectMake(6, 35, 166, 28)), CCSprite::createWithTexture(menuTexture, CCRectMake(6, 70, 166, 28)), this, menu_selector (MainMenuBtnLayer::menucallback)); startgameitem->setTag(MAINMENU_ID_START); CCMenuItemSprite *settings = CCMenuItemSprite::create(CCSprite::createWithTexture(menuTexture, CCRectMake(188, 2, 166, 28)), CCSprite::createWithTexture(menuTexture, CCRectMake(188, 35, 166, 28)), CCSprite::createWithTexture(menuTexture, CCRectMake(188, 70, 166, 28)), this, menu_selector (MainMenuBtnLayer::menucallback)); settings->setTag(MAINMENU_ID_SETTING); CCMenuItemSprite *about = CCMenuItemSprite::create(CCSprite::createWithTexture(menuTexture, CCRectMake(370, 2, 166, 28)), CCSprite::createWithTexture(menuTexture, CCRectMake(370, 35, 166, 28)), CCSprite::createWithTexture(menuTexture, CCRectMake(370, 70, 166, 28)), this, menu_selector (MainMenuBtnLayer::menucallback)); about->setTag(MAINMENU_ID_ABOUT); CCMenuItemSprite *quit = CCMenuItemSprite::create(CCSprite::createWithTexture(menuTexture, CCRectMake(552, 2, 166, 28)), CCSprite::createWithTexture(menuTexture, CCRectMake(552, 35, 166, 28)), CCSprite::createWithTexture(menuTexture, CCRectMake(552, 70, 166, 28)), this, menu_selector (MainMenuBtnLayer::menucallback)); quit->setTag(MAINMENU_ID_QUIT); CCMenu *menu = CCMenu::create(startgameitem, settings, about, quit, NULL); menu->alignItemsVerticallyWithPadding(10); menu->setPosition(ccp(size.width * 0.5f, size.height * 0.5f)); this->addChild(menu); bRet = true; } while(0); return bRet; }
void HelloWorld::updateSquare(float tm){ for(int i = 0; i < 64; i++){ CCSprite *sprite = diamonds[i]; char str[20]; CCImage *image = new CCImage(); int color = getDiamond(str); base[i] = color; image->initWithImageFile(str, CCImage::kFmtJpg); CCTexture2D* texture = new CCTexture2D(); texture->initWithImage(image); sprite->setTexture(texture); } }
void HelloWorld::ccTouchEnded(cocos2d::CCTouch *pTouches, cocos2d::CCEvent *pEvent){ if(m_score<0){ return; } CCPoint point = pTouches->getLocation(); char pos[100]; int y_ = (int)((point.y-diamondRect.origin.y)/dh); int y = 7-y_; int x = (int)((point.x-diamondRect.origin.x)/dw); int result[64] = {0}; if(y>=8||x>=8){ return; } int count = handlerTouchInSquare(y*8+x, result); if(count < 3) return; for(int i = 0; i < count; i++){ CCSprite *sprite = diamonds[result[i]]; CCRotateBy *rotateAct = new CCRotateBy(); rotateAct->initWithDuration(0.2f, 90.0f); sprite->runAction(rotateAct); char str[20]; CCImage *image = new CCImage(); int color = getDiamond(str); base[result[i]] = color; image->initWithImageFile(str, CCImage::kFmtJpg); CCTexture2D* texture = new CCTexture2D(); texture->initWithImage(image); sprite->setTexture(texture); } //delete rotateAct; m_score += 5*count; char str[20]; sprintf(str, "Score: %d", m_score); pLabelScore->setString(str); //fflush(file); }
bool DefaultLayer::init() { if (!CCLayer::init()) return false; // ask director the window size CCSize window_size = CCDirector::sharedDirector()->getWinSize(); CCImage* temp_img = new CCImage(); temp_img->initWithImageFile("atlas.png"); CCTexture2D* texture = new CCTexture2D(); texture->initWithImage(temp_img); texture->autorelease(); delete temp_img; // this will have a capacity for 4 sprites instead of the default which is 20 CCSpriteBatchNode* batch = CCSpriteBatchNode::createWithTexture(texture, 4); // Since I don't have HD versions of the image but I've set enableRetinaDisplay to true, the framework // is using a scaling factor of 2 to divide the image by. This is because it thinks the image was from the low resolution // version, which would mean that running in retina (i.e. 2x larger screen) should make the image look half as big. By calling // getContentSize over getContentSizeInPixels I'm getting the size of the image as it is represented for the appropriate // draw mode. If I actually had HD art, I believe I could just call getContentSizeInPixels and that they'd both be the same. CCSize tex_size(texture->getContentSize()); for (int i = 0; i < 4; i++) { CCSprite* sprite = CCSprite::create(); // The texture rect coords are luckily normal and just like a Photoshop canvas CCRect r((i % 2) == 0 ? 0 : tex_size.width / 2.0f, (i / 2) == 0 ? 0 : tex_size.height / 2.0f, tex_size.width/2.0f, tex_size.height/2.0f); sprite->initWithTexture(texture, r); sprite->setPosition(ccp(sprite->getContentSize().width / 2.0f + (i % 2)*200, sprite->getContentSize().height + (i/2)*150)); batch->addChild(sprite); } addChild(batch); return true; }
//------------------------------------------------------------------------- bool FKCW_UI_ProgressIndicator::initWithMessage(const string& message) { if(!CCLayerColor::initWithColor(m_tagDimColor)) { return false; } // 保存消息 m_strMessage = message; // 创建Label m_pMsgLabel = CCLabelTTF::create(m_strMessage.c_str(), "Helvetica", 28 / CC_CONTENT_SCALE_FACTOR()); // 提示器 CCImage* image = new CCImage(); image->initWithImageData((void*)s_SpinnerPng, 1043); CCTexture2D* tex = new CCTexture2D(); tex->initWithImage(image); m_pIndicator = CCSprite::createWithTexture(tex); CC_SAFE_RETAIN(m_pIndicator); image->release(); tex->release(); _RelayOut(); addChild(m_pIndicator); addChild(m_pMsgLabel); // 开启事件 setTouchEnabled(true); setTouchMode(kCCTouchesOneByOne); setTouchPriority(-MAX_INT); setKeypadEnabled(true); // 开启帧更新 scheduleUpdate(); return true; }
bool CCProgressHUD::initWithMessage(const string& message) { if(!CCLayerColor::initWithColor(m_dimColor)) { return false; } // set message m_message = message; // create label m_msgLabel = CCLabelTTF::create(m_message.c_str(), "Helvetica", 28 / CC_CONTENT_SCALE_FACTOR()); // indicator CCImage* image = new CCImage(); image->initWithImageData((void*)s_spinner_png, 1043); CCTexture2D* tex = new CCTexture2D(); tex->initWithImage(image); m_indicator = CCSprite::createWithTexture(tex); CC_SAFE_RETAIN(m_indicator); CC_SAFE_RELEASE(image); CC_SAFE_RELEASE(tex); // layout relayout(); addChild(m_indicator); addChild(m_msgLabel); // enable event setTouchEnabled(true); setTouchMode(kCCTouchesOneByOne); setTouchPriority(-MAX_INT); setKeypadEnabled(true); // schedule update scheduleUpdate(); return true; }
ToyBrick* ToyLayer::CreateBrick_Rectangle() { int num = CommonHelper::GetRandomNum(1, 20); //image && texture char path[255]; sprintf(path, "Images/ToyBrick/Rectangle/%d.png", num); CCImage *img = new CCImage(); img->autorelease(); if (!img->initWithImageFile(path, cocos2d::CCImage::kFmtPng)) { return NULL; } CCTexture2D *texture = new CCTexture2D(); texture->autorelease(); if (!texture->initWithImage(img)) { return NULL; } // ToyBrick *brick = ToyBrick::create(); CCSize size = texture->getContentSize(); brick->Init(texture, CCRectMake(0, 0, size.width, size.height)); //vector CCPointArray *vector = CCPointArray::create(4); vector->addControlPoint(ccp(-52, -52)); vector->addControlPoint(ccp(52, -52)); vector->addControlPoint(ccp(52, 52)); vector->addControlPoint(ccp(-52, 52)); brick->SetAsPolygon(vector); return brick; }
void RequestTopaz::onHttpRequestCompletedNoEncrypt(CCNode *sender, void *data) { CCHttpResponse* res = (CCHttpResponse*) data; char dumpData[110*110*2]; // 프로필 사진 받아오기 실패 if (!res || !res->isSucceed()) { //CCLog("res failed. error buffer: %s", res->getErrorBuffer()); return; } // dump data std::vector<char> *buffer = res->getResponseData(); for (unsigned int i = 0 ; i < buffer->size() ; i++) dumpData[i] = (*buffer)[i]; dumpData[buffer->size()] = NULL; // make texture2D CCImage* img = new CCImage; img->initWithImageData(dumpData, (int)buffer->size()); CCTexture2D* texture = new CCTexture2D(); texture->initWithImage(img); // set CCSprite (profile 모음 리스트에 갱신) int numOfList = friendList.size(); int index = atoi(res->getHttpRequest()->getTag()); ProfileSprite* psp = ProfileSprite::GetObj(friendList[index]->GetImageUrl()); psp->SetSprite(texture); psp->SetLoadingDone(true); // 화면에 보이는 스프라이트 교체 if (spriteClassScroll == NULL) return; spriteClassScroll->ChangeSprite(-888*(numOfList-index), psp->GetProfile()); ((CCSprite*)spriteClassScroll->FindSpriteByTag(-777*(numOfList-index)))->setOpacity(255); }
/* @todo CGImageRef -(CCTexture2D*) addCGImage: (CGImageRef) imageref forKey: (string & )key { CCAssert(imageref != nil, @"TextureCache: image MUST not be nill"); CCTexture2D * tex = nil; // If key is nil, then create a new texture each time if( key && (tex=[textures objectForKey: key] ) ) { return tex; } // prevents overloading the autorelease pool UIImage *image = [[UIImage alloc] initWithCGImage:imageref]; tex = [[CCTexture2D alloc] initWithImage: image]; [image release]; if(tex && key) [textures setObject: tex forKey:key]; else CCLOG(@"cocos2d: Couldn't add CGImage in CCTextureCache"); return [tex autorelease]; }*/ CCTexture2D* CCTextureCache::addUIImage(CCImage *image, const char *key) { CCAssert(image != NULL && key != NULL, "TextureCache: image MUST not be nill"); CCTexture2D * texture = NULL; std::string forKey = key; m_pDictLock->lock(); do { // If key is nil, then create a new texture each time if(texture = m_pTextures->objectForKey(forKey)) { break; } // prevents overloading the autorelease pool texture = new CCTexture2D(); texture->initWithImage(image); if(texture) { m_pTextures->setObject(texture, forKey); texture->autorelease(); } else { CCLOG("cocos2d: Couldn't add UIImage in CCTextureCache"); } } while (0); m_pDictLock->unlock(); return texture; }
bool MainMenuCtrlLayer::init() { bool ret = false; do { CC_BREAK_IF(!CCLayer::init()); CCSize winSize = CCDirector::sharedDirector()->getWinSize(); // 菜单 // 菜单纹理 CCImage menuImage; menuImage.initWithImageFile("menu.png"); CCTexture2D *menuTexture = new CCTexture2D(); menuTexture->initWithImage(&menuImage); // 菜单选项 CCMenuItemSprite *newGameMenuItem = CCMenuItemSprite::itemFromNormalSprite(CCSprite::spriteWithTexture(menuTexture, CCRectMake(0, 0, 126, 33)), CCSprite::spriteWithTexture(menuTexture, CCRectMake(0, 33, 126, 33)), CCSprite::spriteWithTexture(menuTexture, CCRectMake(0, 33 * 2, 126, 33)), this, menu_selector(MainMenuCtrlLayer::mainMenuCallback)); newGameMenuItem->setTag(MAINMENU_ID_NEW_GAME); CCMenuItemSprite *settingMenuItem = CCMenuItemSprite::itemFromNormalSprite(CCSprite::spriteWithTexture(menuTexture, CCRectMake(126, 0, 126, 33)), CCSprite::spriteWithTexture(menuTexture, CCRectMake(126, 33, 126, 33)), CCSprite::spriteWithTexture(menuTexture, CCRectMake(126, 33 * 2, 126, 33)), this, menu_selector(MainMenuCtrlLayer::mainMenuCallback)); settingMenuItem->setTag(MAINMENU_ID_SETTING); CCMenuItemSprite *aboutMenuItem = CCMenuItemSprite::itemFromNormalSprite(CCSprite::spriteWithTexture(menuTexture, CCRectMake(252, 0, 126, 33)), CCSprite::spriteWithTexture(menuTexture, CCRectMake(252, 33, 126, 33)), CCSprite::spriteWithTexture(menuTexture, CCRectMake(252, 33 * 2, 126, 33)), this, menu_selector(MainMenuCtrlLayer::mainMenuCallback)); aboutMenuItem->setTag(MAINMENU_ID_ABOUT); CCMenu *mainMenu = CCMenu::menuWithItems(newGameMenuItem, settingMenuItem, aboutMenuItem, NULL); mainMenu->alignItemsVerticallyWithPadding(10); mainMenu->setPosition(ccp(winSize.width / 2, winSize.height / 2 - 80)); this->addChild(mainMenu); ret = true; } while (0); return ret; }
CCTexture2D* Util::getGrayTexture(CCTexture2D* texture){ typedef enum { RED = 0, GREEN = 1, BLUE = 2, ALPHA = 3 } PIXELS; CCSize textSize = texture->getContentSize(); CCSprite *temporarySprite = CCSprite::createWithTexture(texture); //就这么一小句搞了我半天了,不过能出来也值了 temporarySprite->setAnchorPoint(ccp(0,0)); CCRenderTexture *rt = CCRenderTexture::create(textSize.width, textSize.height); rt->begin(); temporarySprite->visit(); rt->end(); CCImage *image = rt->newCCImage(); unsigned char* pixels = image->getData(); int len = image->getDataLen(); uint32_t *p = (uint32_t *)pixels; for(int i=0;i<len;i++){ uint8_t *rgbaPixel = (uint8_t *) &p[i]; //uint32_t gray = 0.3 * rgbaPixel[RED] + 0.59 * rgbaPixel[GREEN] + 0.11 * rgbaPixel[BLUE]; uint32_t gray = 1.2*rgbaPixel[RED] + 1.0*rgbaPixel[GREEN] + 0.0*rgbaPixel[BLUE]; // set the pixels to gray rgbaPixel[RED] = gray; rgbaPixel[GREEN] = gray; rgbaPixel[BLUE] = gray; } CCTexture2D* newtexture = new CCTexture2D(); newtexture->autorelease(); newtexture->initWithImage(image); image->release(); return newtexture; }
void HelloWorld::update(float dt) { bool bComputeAgain = false; if (m_bSpeedUp) m_fElapsedTime = 1.0; else m_fElapsedTime += dt * 0.5; //m_fScale = pow(2.0f, m_fElapsedTime); if (m_fElapsedTime >= 1.0) //if (m_fScale >= 2.0) { //m_fScale /= 2.0; //m_fElapsedTime = 0; m_fElapsedTime = fmod(m_fElapsedTime, 1.0f); bComputeAgain = true; } //static int off = 0; // RGBA raw data 세팅함. /* float c1,c2,c3,c4,c5,c6,v; int indexColor; int offset = 0; c1=(float)(rand()%5+1); c2=(float)(rand()%5+1); c3=(float)(rand()%5+1); c4=(float)(rand()%10+1); c5=(float)(rand()%512+1); c6=(float)(rand()%512+1); for (int i=0; i<IMAGE_HEIGHT; i++) { for (int j=0; j<IMAGE_WIDTH; j++) { v = cos((float)(j-256+c5)/(cos((float)i/c1)+c3))+ cos((float)(j)*(float)(i/c2)+c6)+ cos((float)(j/c3)*(float)(i/c4)+c5); // 최종 결과물 = 높이값 indexColor = v*10.5+64; if (indexColor<0) indexColor = 0; else if (indexColor>255) indexColor=255; //(indexColor-64)*8; m_pIndexm_pIndexBuffer[offset++] = indexColor; } } */ int i, j; int x_q1, x_q3; int y_q1, y_q3; if (bComputeAgain) { // 각각 25%, 75% 지점의 좌표를 구한다. x_q1 = IMAGE_WIDTH/4; x_q3 = IMAGE_WIDTH - IMAGE_WIDTH/4 -1; y_q1 = IMAGE_HEIGHT/4; y_q3 = IMAGE_HEIGHT - IMAGE_HEIGHT/4 -1; for (i=0; i<IMAGE_HEIGHT/4; i++) { for (j=0; j<IMAGE_WIDTH/4; j++) { m_pIndexBuffer[i*2*IMAGE_WIDTH+j*2] = GetBuffer((y_q1+i)*IMAGE_WIDTH+x_q1+j,-1,-1); m_pIndexBuffer[i*2*IMAGE_WIDTH+j*2+1]= GetBuffer((y_q1+i)*IMAGE_WIDTH+x_q1+j,0,-1); m_pIndexBuffer[i*2*IMAGE_WIDTH+IMAGE_WIDTH-j*2-1]=GetBuffer((y_q1+i)*IMAGE_WIDTH+x_q3-j,1,-1); m_pIndexBuffer[i*2*IMAGE_WIDTH+IMAGE_WIDTH-j*2-2]=GetBuffer((y_q1+i)*IMAGE_WIDTH+x_q3-j,0,-1); m_pIndexBuffer[(i*2+1)*IMAGE_WIDTH+j*2]=GetBuffer((y_q1+i)*IMAGE_WIDTH+x_q1+j,-1,0); m_pIndexBuffer[(i*2+1)*IMAGE_WIDTH+j*2+1]=GetBuffer((y_q1+i)*IMAGE_WIDTH+x_q1+j,0,0); m_pIndexBuffer[(i*2+2)*IMAGE_WIDTH-j*2-1]=GetBuffer((y_q1+i)*IMAGE_WIDTH+x_q3-j,1,0); m_pIndexBuffer[(i*2+2)*IMAGE_WIDTH-j*2-2]=GetBuffer((y_q1+i)*IMAGE_WIDTH+x_q3-j,0,0); m_pIndexBuffer[(IMAGE_HEIGHT-1-i*2)*IMAGE_WIDTH+j*2]=GetBuffer((y_q3-i)*IMAGE_WIDTH+x_q1+j,-1,1); m_pIndexBuffer[(IMAGE_HEIGHT-1-i*2)*IMAGE_WIDTH+j*2+1]=GetBuffer((y_q3-i)*IMAGE_WIDTH+x_q1+j,0,1); m_pIndexBuffer[(IMAGE_HEIGHT-1-i*2+1)*IMAGE_WIDTH-j*2-1]=GetBuffer((y_q3-i)*IMAGE_WIDTH+x_q3-j,1,1); m_pIndexBuffer[(IMAGE_HEIGHT-1-i*2+1)*IMAGE_WIDTH-j*2-2]=GetBuffer((y_q3-i)*IMAGE_WIDTH+x_q3-j,0,1); m_pIndexBuffer[(IMAGE_HEIGHT-2-i*2)*IMAGE_WIDTH+j*2]=GetBuffer((y_q3-i)*IMAGE_WIDTH+x_q1+j,-1,0); m_pIndexBuffer[(IMAGE_HEIGHT-2-i*2)*IMAGE_WIDTH+j*2+1]=GetBuffer((y_q3-i)*IMAGE_WIDTH+x_q1+j,0,0); m_pIndexBuffer[(IMAGE_HEIGHT-2-i*2+1)*IMAGE_WIDTH-j*2-1]=GetBuffer((y_q3-i)*IMAGE_WIDTH+x_q3-j,1,0); m_pIndexBuffer[(IMAGE_HEIGHT-2-i*2+1)*IMAGE_WIDTH-j*2-2]=GetBuffer((y_q3-i)*IMAGE_WIDTH+x_q3-j,0,0); } } // 가운데 4 pixel에 랜덤값을 더함. m_pIndexBuffer[(IMAGE_HEIGHT/2-1)*IMAGE_WIDTH+(IMAGE_WIDTH/2-1)]+=rand()%6-2; m_pIndexBuffer[(IMAGE_HEIGHT/2-1)*IMAGE_WIDTH+(IMAGE_WIDTH/2)]+=rand()%5-2; m_pIndexBuffer[(IMAGE_HEIGHT/2)*IMAGE_WIDTH+(IMAGE_WIDTH/2-1)]+=rand()%5-2; m_pIndexBuffer[(IMAGE_HEIGHT/2)*IMAGE_WIDTH+(IMAGE_WIDTH/2)]+=rand()%5-2; // 인덱스 -> 이미지 변환 IndexToImage(m_pIndexBuffer, m_pImageBuffer, m_pPaletteBuffer, IMAGE_WIDTH*IMAGE_HEIGHT); //off++; m_pBitmap = new CCImage(); m_pBitmap->initWithImageData(m_pImageBuffer, IMAGE_WIDTH*IMAGE_HEIGHT*4, CCImage::kFmtRawData, IMAGE_WIDTH, IMAGE_HEIGHT, 8); CCTexture2D *pTex = new CCTexture2D(); pTex->initWithImage(m_pBitmap); //m_pScreen->removeFromParentAndCleanup(true); //m_pScreen = CCSprite::createWithTexture(pTex); m_pScreen->setTextureRect(CCRectMake(0, 0, IMAGE_WIDTH, IMAGE_HEIGHT)); m_pScreen->setTexture(pTex); pTex->release(); m_pBitmap->release(); } /* // position the sprite on the center of the screen CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize(); CCPoint origin = CCDirector::sharedDirector()->getVisibleOrigin(); m_pScreen->setPosition(ccp(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y)); // add the sprite as a child to this layer this->addChild(m_pScreen, 0); */ // 스프라이트의 크기를 조정 m_pScreen->setScale(1.0+m_fElapsedTime); //m_pScreen->setScale(1.0+m_fScale); }
CCTexture2D * CCTextureCache::addImage(const char * path) { CCAssert(path != NULL, "TextureCache: fileimage MUST not be NULL"); CCTexture2D * texture = NULL; // Split up directory and filename // MUTEX: // Needed since addImageAsync calls this method from a different thread m_pDictLock->lock(); // remove possible -HD suffix to prevent caching the same image twice (issue #1040) std::string pathKey = path; CCFileUtils::ccRemoveHDSuffixFromFile(pathKey); pathKey = CCFileUtils::fullPathFromRelativePath(pathKey.c_str()); texture = m_pTextures->objectForKey(pathKey); std::string fullpath = pathKey; // (CCFileUtils::fullPathFromRelativePath(path)); if( ! texture ) { std::string lowerCase(path); for (unsigned int i = 0; i < lowerCase.length(); ++i) { lowerCase[i] = tolower(lowerCase[i]); } // all images are handled by UIImage except PVR extension that is handled by our own handler // if ( [[path lowercaseString] hasSuffix:@".pvr"] ) do { if (std::string::npos != lowerCase.find(".pvr")) { #ifdef _POWERVR_SUPPORT_ texture = this->addPVRTCImage(fullpath.c_str()); #endif } // Issue #886: TEMPORARY FIX FOR TRANSPARENT JPEGS IN IOS4 else if (std::string::npos != lowerCase.find(".jpg") || std::string::npos != lowerCase.find(".jpeg")) { CCImage image; CCFileData data(fullpath.c_str(), "rb"); unsigned long nSize = data.getSize(); unsigned char* pBuffer = data.getBuffer(); CC_BREAK_IF(! image.initWithImageData((void*)pBuffer, nSize, CCImage::kFmtJpg)); texture = new CCTexture2D(); texture->initWithImage(&image); if( texture ) { #if CC_ENABLE_CACHE_TEXTTURE_DATA // cache the texture file name VolatileTexture::addImageTexture(texture, fullpath.c_str(), CCImage::kFmtJpg); #endif m_pTextures->setObject(texture, pathKey); texture->release(); } else { CCLOG("cocos2d: Couldn't add image:%s in CCTextureCache", path); } } else { // prevents overloading the autorelease pool CCImage image; CCFileData data(fullpath.c_str(), "rb"); unsigned long nSize = data.getSize(); unsigned char* pBuffer = data.getBuffer(); CC_BREAK_IF(! image.initWithImageData((void*)pBuffer, nSize, CCImage::kFmtPng)); texture = new CCTexture2D(); texture->initWithImage(&image); if( texture ) { #if CC_ENABLE_CACHE_TEXTTURE_DATA // cache the texture file name VolatileTexture::addImageTexture(texture, fullpath.c_str(), CCImage::kFmtPng); #endif m_pTextures->setObject(texture, pathKey); texture->release(); } else { CCLOG("cocos2d: Couldn't add image:%s in CCTextureCache", path); } } } while (0); } m_pDictLock->unlock(); return texture; }
void HelloWorld::tick(ccTime dt) { int velocityIterations = 8; int positionIterations = 1; world->Step(dt, velocityIterations, positionIterations); for (b2Body* b = world->GetBodyList(); b; b=b->GetNext()) { if(b->GetUserData() != NULL) { CCSprite *myActor = (CCSprite *)b->GetUserData(); myActor->setPosition(ccp(b->GetPosition().x * PTM_RATIO, b->GetPosition().y * PTM_RATIO)); myActor->setRotation(-1 * CC_RADIANS_TO_DEGREES(b->GetAngle())); } } //Arm is being released if (releasingArm && bulletJoint) { if(armJoint->GetJointAngle() <= CC_DEGREES_TO_RADIANS(10)) { releasingArm = false; world->DestroyJoint(bulletJoint); bulletJoint = NULL; this->schedule(schedule_selector(HelloWorld::resetBullet), 5.0f); } } //Bullet is moving if (bulletBody != nullptr && bulletJoint == NULL) { b2Vec2 position = bulletBody->GetPosition(); CCPoint myPosition = this->getPosition(); CCSize screenSize = CCDirector::sharedDirector()->getWinSize(); if(position.x > screenSize.width / 2.0f / PTM_RATIO) { myPosition.x = -MIN(960.0f - screenSize.width, position.x * PTM_RATIO - screenSize.width / 2.0f); this->setPosition(myPosition); } } set<b2Body*>::iterator pos; for(pos = contactListener->contacts.begin(); pos != contactListener->contacts.end(); ++pos) { b2Body *body = *pos; CCNode *contactNode = (CCNode *) body->GetUserData(); CCPoint position = contactNode->getPosition(); this->removeChild(contactNode,true); world->DestroyBody(body); for(vector<b2Body*>::size_type i = 0; i >= targets->size(); i++) { try { if(targets->at(i) == body) { if(i == targets->size()-1) { printf("asdf"); } targets->erase(targets->begin() + i); } } catch(exception e) { enemies->clear(); break; } } for(vector<b2Body*>::size_type i = 0; i >= enemies->size(); i++) { try { if(enemies->at(i) == body) { if(i == enemies->size()-1) { printf("asdf"); } enemies->erase(enemies->begin() + i); } } catch(exception e) { enemies->clear(); break; } } CCParticleSun* explosion = new CCParticleSun(); explosion->initWithTotalParticles(200); //explosion->setTotalParticles(200); explosion->setAutoRemoveOnFinish(true); explosion->setStartSize(10.0f); explosion->setSpeed(70.0f); explosion->setAnchorPoint(ccp(0.5f,0.5f)); explosion->setPosition(position); explosion->setDuration(1.0f); CCTexture2D *tex = new CCTexture2D(); CCImage *img = new CCImage(); img->initWithImageFile("fire.png"); tex->initWithImage(img); explosion->setTexture(tex); this->addChild(explosion, 11); explosion->release(); } contactListener->contacts.clear(); }
void MRemoteSprite::setLocalSrc(std::string srcLocalPath) { srcLocalPath = MFileDownloader::getLocalFilePath(srcLocalPath); if (_sprite != nullptr) { _sprite->removeFromParent(); _sprite = nullptr; } CCImage *image = nullptr; if (isSpecialSrc(srcLocalPath)) { image = get_special_ccimage(srcLocalPath, getOpacitySrc(srcLocalPath)); } else if (isSpecialSrcSmall(srcLocalPath)) { image = get_special_ccimage(srcLocalPath, getOpacitySrcSmall(srcLocalPath)); } else { image = get_ccimage(srcLocalPath); } if (image == nullptr) { M_DEBUG( "!!! get image failed, file >> " << srcLocalPath ); this->dispatchEvent(EVENT_CARD_DOWNLOAD_OK); return ; } CCTexture2D *texture = nullptr; if (isGray()) { texture = mlib::create_gray_texture(image); } else { texture = new CCTexture2D(); texture->autorelease(); if( texture && texture->initWithImage(image) ) { } } if (texture != nullptr) { if (sizeShow().equals(CCSizeZero)) { _sprite = MSprite::createWithTexture(texture); } else { CCSize cSize = texture->getContentSize(); _sprite = MSprite::createWithTexture(texture, CCRectMake((cSize.width - sizeShow().width) / 2, (cSize.height - sizeShow().height) / 2, sizeShow().width, sizeShow().height)); } } if (_sprite != nullptr) { if (alignment() == RemoteSpritAlignmentBottom) { _sprite->setAnchorPoint(ccp(0.5, 0)); _sprite->setPosition(ccp(getContentSize().width/2, 0)); } else // default alignment: center { _sprite->setAnchorPoint(ccp(0.5, 0.5)); _sprite->setPosition(ccp(getContentSize().width/2, getContentSize().height/2)); } _sprite->setColor(_color); _sprite->setOpacity(_opacity); this->addChild(_sprite); _srcPath = srcLocalPath; } _isGrayChange = false; this->dispatchEvent(EVENT_CARD_DOWNLOAD_OK); }
void GameScene::start(float dt) { bool autoPlay = true; // apply loaded image for(auto it = mImageDictionary.begin(); it != mImageDictionary.end(); it++) { CCTexture2D* texture = new CCTexture2D(); if(false == texture->initWithImage(it->second)) { delete texture; continue; } mBgaDictionary[it->first] = texture; } for(auto it = mBmsDocument.channel().begin(); it != mBmsDocument.channel().end(); it++) { const std::string& channel = it->first; if(channel.find("01") != std::string::npos) { mChannelPlayers[channel] = new WaveChannelPlayer(it->second, mWavDictionary); } else if(channel.find("02") != std::string::npos) { //mChannelPlayers[channel] = new BarScaleChannelPlayer(it->second); } else if(channel.find("03") != std::string::npos) { mChannelPlayers[channel] = new BpmChannelPlayer(it->second); } else { int iChannel = base36ToInt(channel.c_str()); if(base36ToInt("10") < iChannel && iChannel < base36ToInt("70") && channel[1] != '0'/*exclude 20, 30, 40, ...*/) { int mappedKey = -1; for(int i=0; i<sizeof(keyChannelMap)/sizeof(keyChannelMap[0]); i++) { if(channel == keyChannelMap[i]) { mappedKey = i; break; } } if(mappedKey < 0) { mChannelPlayers[channel] = new WaveChannelPlayer(it->second, mWavDictionary); } else { mChannelPlayers[channel] = new PlayChannelPlayer(it->second, mWavDictionary, Key::MappedKey(mappedKey), autoPlay); } } else if( base36ToInt(ChannelType::BGA_BASE) == iChannel || base36ToInt(ChannelType::BGA_LAYER) == iChannel || base36ToInt(ChannelType::BGA_LAYER2) == iChannel ) { BgaChannelPlayer* bgaPlayer = new BgaChannelPlayer(it->second, mBgaDictionary, base36ToInt(ChannelType::BGA_POOR) == iChannel); mChannelPlayers[channel] = bgaPlayer; bgaPlayer->getSprite()->setContentSize(Size(640, 480)); bgaPlayer->getSprite()->setPosition(Point(640, 480)); addChild(bgaPlayer->getSprite()); } } } {//panel // load skin CCTexture2D* skinTexture = CCTextureCache::sharedTextureCache()->addImage(Panel::SKIN_PATH); // no antialias skinTexture->setAliasTexParameters(); CCNode* panel = CCNode::create(); addChild(panel); Panel* frontPanel = new FrontPanel; Panel* backPanel = new BackPanel(mChannelPlayers); Panel* controlPanel = new ControlPanel; panel->addChild(backPanel); panel->addChild(frontPanel); panel->addChild(controlPanel); // fit panel to screen panel->setScale(CCDirector::sharedDirector()->getOpenGLView()->getDesignResolutionSize().height / 480); } mCurrentBpm = mBmsDocument.header().getBpm(); //끝낼 마디 설정 mEndPosition = 0; for(auto it = mBmsDocument.channel().begin(); it != mBmsDocument.channel().end(); it++) { if(it->second->endPosition() > mEndPosition) mEndPosition = it->second->endPosition(); } mEndPosition += 1; // 시간 관련 초기화 mLastBpmTime = mStartTime = currentTime(); mLastBpmMeter = 0; origTime = mStartTime;// - 60000; origMadi = origPosit = 0; mBarScale = 1.0f; nowMadi = -1; // TODO 플레이노트 초기화(시간, 키 수 등) bMiss = false; bAuto = true; mScore = 0; mCombo = 0; // emit reset Event::GameConfigEvent configEvent(*mSong, 1, autoPlay, mStartTime); Director::getInstance()->getEventDispatcher()->dispatchCustomEvent(Event::GameConfigEvent::RESET, &configEvent); }
// on "init" you need to initialize your instance bool HelloWorld::init() { ////////////////////////////// // 1. super init first if ( !CCLayer::init() ) { return false; } CCSize visibleSize = CCDirector::sharedDirector()->getVisibleSize(); CCPoint origin = CCDirector::sharedDirector()->getVisibleOrigin(); m_fElapsedTime = 0; m_fScale = 1.0; m_bSpeedUp = false; ///////////////////////////// // 2. add a menu item with "X" image, which is clicked to quit the program // you may modify it. // add a "close" icon to exit the progress. it's an autorelease object CCMenuItemImage *pCloseItem = CCMenuItemImage::create( "CloseNormal.png", "CloseSelected.png", this, menu_selector(HelloWorld::menuCloseCallback)); pCloseItem->setPosition(ccp(origin.x + visibleSize.width - pCloseItem->getContentSize().width/2 , origin.y + pCloseItem->getContentSize().height/2)); // create menu, it's an autorelease object CCMenu* pMenu = CCMenu::create(pCloseItem, NULL); pMenu->setPosition(CCPointZero); this->addChild(pMenu, 1); ///////////////////////////// // 3. add your codes below... // add a label shows "Hello World" // create and initialize a label CCLabelTTF* pLabel = CCLabelTTF::create("Map Maker", "Arial", 24); // position the label on the center of the screen pLabel->setPosition(ccp(origin.x + visibleSize.width/2, origin.y + visibleSize.height - pLabel->getContentSize().height)); // add the label as a child to this layer this->addChild(pLabel, 1); // 버퍼 생성 및 팔레트 로딩 m_pPaletteBuffer = new unsigned char[NUM_PALETTES * 4]; // RGBA * 256 인덱스 컬러 m_pIndexBuffer = new unsigned char[IMAGE_WIDTH * IMAGE_HEIGHT]; // 인덱스 컬러로 된 이미지 버퍼 m_pImageBuffer = new unsigned char[IMAGE_WIDTH * IMAGE_HEIGHT*4]; // RGBA * 512 * 512 /* // LAND.COL로 부터 팔레트 로딩 std::string sFilePath = std::string(""); sFilePath += CCFileUtils::sharedFileUtils()->fullPathForFilename("LAND.COL"); FILE *pal_file = fopen(sFilePath.c_str(), "rb"); if (pal_file) { fread(&head, sizeof(ColHeader), 1, pal_file); //if (head.num_cols > NUM_PALETTES) // head.num_cols = NUM_PALETTES; fread(palette, 256*3, 1, pal_file); fclose(pal_file); // 팔레트 변환 RGB -> RGBA BuildPal(palette, m_pPaletteBuffer); } */ // PNG로부터 팔레트 로딩 GetPaletteFromFile("mapheight.png", m_pPaletteBuffer, 256); // add generating "Map" screen" // 인덱스 컬러로 된 이미지에 랜덤 값을 채운다. for (int i = 0; i < IMAGE_WIDTH*IMAGE_HEIGHT; i++) m_pIndexBuffer[i] = rand()%NUM_PALETTES; // 인덱스 -> 이미지 변환 IndexToImage(m_pIndexBuffer, m_pImageBuffer, m_pPaletteBuffer, IMAGE_WIDTH*IMAGE_HEIGHT); m_pBitmap = new CCImage(); m_pBitmap->initWithImageData(m_pImageBuffer, IMAGE_WIDTH*IMAGE_HEIGHT*4, CCImage::kFmtRawData, IMAGE_WIDTH, IMAGE_HEIGHT, 8); CCTexture2D *pTex = new CCTexture2D(); pTex->initWithImage(m_pBitmap); m_pScreen = CCSprite::createWithTexture(pTex); pTex->release(); m_pBitmap->release(); // position the sprite on the center of the screen m_pScreen->setPosition(ccp(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y)); m_pScreen->setScale( 2.0 ); // add the sprite as a child to this layer this->addChild(m_pScreen, 0); setTouchEnabled(true); this->scheduleUpdate(); return true; }