void RS_Main::blendImage() { m_nCorrentCnt = 0; // 상단 문제부분 이미지 섞기 int* pRand = new int[m_nImgCount]; GameUtil::Rand(pRand, m_nImgCount); RS_Block* pBlock = NULL; for(unsigned int i=0; i<m_arrImgQ.count(); i++) { pBlock = (RS_Block*)m_arrImgQ.objectAtIndex(i); int base = pRand[i]; pBlock->setPosition(ccp(m_ptCorrect[base].x, m_ptCorrect[base].y)); pBlock->setOpacity(255); pBlock->m_bEnd = false; } delete []pRand; // 하단 정답부분 Clear RS_Blank* pBlank = NULL; for(unsigned int k=0; k<m_arrImgA.count(); k++) { pBlank = (RS_Blank*)m_arrImgA.objectAtIndex(k); pBlank->m_bEnd = false; // 맞춘 이미지가 있다면 삭제 if (pBlank->m_pSprite) { pBlank->removeChild(pBlank->m_pSprite, true); pBlank->m_pSprite = NULL; } } // 각 스크롤뷰 위치 Reset m_scrollVQ->setContentOffset(ccp(0, 0)); m_scrollVA->setContentOffset(ccp(0, 0)); // 배경음 Stop if (CocosDenshion::SimpleAudioEngine::sharedEngine()->isBackgroundMusicPlaying()) CocosDenshion::SimpleAudioEngine::sharedEngine()->stopBackgroundMusic(true); // 배경음 Play CocosDenshion::SimpleAudioEngine::sharedEngine()->playBackgroundMusic(m_szBGM, true); }
bool RS_Main::CreateQuestion() { bool bRet = false; do { // Answer영역 CCScrollView m_scrollVQ = CCScrollView::create(); // Answer영역 ScrollView에 스프라이트 생성 char szFile[260]; // xml에서 읽어온 값 사용 m_nImgCount = m_nGameImgCnt; RS_Block* pBlock = NULL; int* pRand = new int[m_nImgCount]; GameUtil::Rand(pRand, m_nImgCount); CCRect rcBB; // 블럭의 크기를 저장 float fPosX; int index; for (int i=0; i<m_nImgCount; i++) { index = pRand[i]; sprintf(szFile, "eBook/%02d/rememberStory/lv%d_%02d.png", m_nCurEBookPage, m_nGameLevel, index+1); // 블럭이미지로 쓸 이미지 로딩. CCTexture2D * pBlockTexture = CCTextureCache::sharedTextureCache()->addImage(szFile); pBlock = RS_Block::BlockWithTexture(pBlockTexture, index+1, this); rcBB = pBlock->boundingBox(); // 레이어에서의 위치 지정 (anchor point 감안, Margin 추가) fPosX = SC_MARGIN_LQ + i* (rcBB.size.width + SCROLL_ITEM_GAP_Q); pBlock->setPosition(ccp(fPosX, 0)); m_scrollVQ->addChild(pBlock, 0); m_arrImgQ.addObject(pBlock); // 생성한 블럭의 위치를 저장해둔다. 추후 섞을때 이용 m_ptCorrect[i].x = pBlock->getPositionX(); m_ptCorrect[i].y = pBlock->getPositionY(); } delete []pRand; if (m_arrImgQ.count() == 0) { bRet = false; break; } int nWidth = SC_MARGIN_LQ + m_arrImgQ.count() * (rcBB.size.width + SCROLL_ITEM_GAP_Q) - SCROLL_ITEM_GAP_Q + SC_MARGIN_RQ; int nHeight = rcBB.size.height; CCLog("CreateQuestion. block width[%f]", rcBB.size.width); CCLog("CreateQuestion. block height[%f]", rcBB.size.height); m_scrollVQ->setContentSize(CCSizeMake(nWidth, nHeight));// 스크롤뷰에 포함할 레이어 크기 m_scrollVQ->setContentOffset(CCPointZero); m_scrollVQ->setDirection(kCCScrollViewDirectionHorizontal); // 스크롤 방향 m_scrollVQ->setDelegate(this); m_scrollVQ->setPosition(ccp(0, SC_MARGIN_BA + BLANK_HEIGHT + SC_MARGIN_BQ)); // 표시할 위치 (무조건 지정좌표에 좌하단이 위치한다.) m_scrollVQ->setViewSize(CCSizeMake(s.width, nHeight)); // 보이는 영역크기 this->addChild(m_scrollVQ, 2); bRet = true; } while(0); return bRet; }