Arvanttt

تند و سریع

Arvant

تند و سریع












راهنمای سریع ساختار توابع API در Cocos2d-x

جمعه, ۱۴ تیر ۱۳۹۲، ۱۱:۳۰ ق.ظ

سازنده کلاس

در انجین شما با استفاده از سازنده کلاس (مبحث سازنده کلاس در شی گرایی در زبان ++C) می توانید متغیر های اولیه رو مقدار دهی نماید .و همچنین با استفاده از تعریف تابعی با نام ()initwith نسبت به آماده سازی کلی شی اقدام نمایید (منطق کلاس رو می تونید در این قسمت پیاده کنید شامل اضافه کردن قسمت های مختلف به شی و ...)

استفاده از سازنده کلاس 

MyClass::MyClass()  // c++ class constructor
:m_pData(NULL)      // set all member variables to default values
,m_bFlag(false)
,m_nCount(0)
{
    memset(m_Array, 0, sizeof(m_Array));   // only set default values here, but not logics
}

اما از آنجایی که سازنده قادر به برگرداندن مقادیر بولین نمی باشد پس ما برای تشخیص اینکه عملیات در هنگام ساخت و آماده سازی کلاس با موفقیت انجام شده است یا خیر پس ما از متد ()initwith به صورت زیر استفاده خواهیم کرد

1:bool MyClass::initWithFilename(const char* filename)
2:{
3:    // just take loading texture as a sample, this behaviour can be failed if the image file doesn't  exist. 
4:    bool bReturnValue = loadTextureIntoMemory(filename);  
5:    return bReturnValue;
6:}

و بدین صورت از هر دوی این ساختار ها همراه با هم در برنامه استفاده خواهیم برد 

 1:MyClass* obj = new MyClass;
 2:if (true == obj->initWithFilename("texture.png"))
 3:{
 4:    // congratulations, go ahead!
 5:}
 6:else
 7:{
 8:    // error process
 9:}

در cocos2d-x برای شی تمامی کلاس ها (CCSprite, CCLabelTTF, CCAction و...) یک سازنده به نام (...)CCClass* CCClass::create در نظر گرفته شده است که از ان می توانید برای ساخت اشیای از این کلاس ها استفاده کنید .

1:CCSprite* _sprite = CCSprite::create("Monster.png");
2:_sprite->setPosition(ccp(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y));
3:this->addChild(_sprite); 

()doSomething

این یک استایل برای تعریف نام متغیر ها می باشد که از دو قسمت  اولی فعل و دومی اسم تشکیل شده است 

مثال:

 replaceScene(CCScene*), getTexture()

()doWithResource

به مشابه استایل بالا مورد استفاده قرار گرفته است .

مثال :

initWithTexture(CCTexture*), initWithFilename(const char*)

onEventCallback()

هر بار که با چنین اسمی در توابع برخورد کردید بدانید که این یک تابع CallBack (توابعی عضو کلاس که توسط انجین جهت موارد خاص فراخوانی می شوند)

1class CCLayer
2{
3public:
4    virtual void onEnter();
5    virtual void onExit();
6    virtual void onEnterTransitionDidFinish();
7}

البته این شیوه در همه قسمت ها رعایت نشده است به عنوان مثال توابع ccTouchBegan,  ccTouchMoved از این نوع توابع می باشند ولی نحوه نامگذاری آنها به صورت اعلام شده نیست (بیشتر جهت همخوانی با سایر اعضای خانواده انجین این تصمیم گرفته شده است.)

properties

برای کار با پراپرتیز های یک کلاس شما از متد های set , get در انجین استفاده می کنید همچنین برای آگاهی از پراپرتیز های که دارای مقدار بولین می باشد توابعی به صورت isProperty در نظر گرفته شده است  .

مثال:

 _sprite->setPosition(ccp(0,0))

_director->getVisibleSize()

CCSprite::isDirty()

 

ادامه دارد...

  • موافقین ۱ مخالفین ۰
  • جمعه, ۱۴ تیر ۱۳۹۲، ۱۱:۳۰ ق.ظ
به اشتراک می گذارم : به اشتراک بگذاریم به اشتراک بگذاریم به اشتراک بگذاریم به اشتراک بگذاریم