Maison base de données tutoriel mysql 零基础学Cocos2d

零基础学Cocos2d

Jun 07, 2016 pm 03:49 PM
create 基础

// create a scene. it's an autorelease object Scene *scene = HelloWorld :: createScene (); // run director- runWithScene (scene); 那么接下来,我们看看这场戏到底内部是执行流程的

// create a scene. it's an autorelease object

    Scene *scene = HelloWorld::createScene();


    // run

    director->runWithScene(scene);


那么接下来,我们看看这场戏到底内部是执行流程的啊。

零基础学Cocos2d

OK,首先看看HelloWorldScene.h 到底有什么东西。

静态创建函数

static cocos2d::Scene* createScene();


初始化

virtualbool init();


菜单的一个回调函数

void menuCloseCallback(cocos2d::Ref* pSender);


这个。。。。看宏定义上面的注释说是创建一个特定的类

CREATE_FUNC(HelloWorld);


/**
 * define a create function for a specific type, such as Layer
 * @param \__TYPE__  class type to add create(), such as Layer
 */
#define CREATE_FUNC(__TYPE__) \
static __TYPE__* create() \
{ \
    __TYPE__ *pRet = new __TYPE__(); \
    if (pRet && pRet->init()) \
    { \
        pRet->autorelease(); \
        return pRet; \
    } \
    else \
    { \
        delete pRet; \
        pRet = NULL; \
        return NULL; \
    } \
}
Copier après la connexion

看完后 ,哦,,,,
CREATE_FUNC(HelloWorld);
Copier après la connexion

就是相当于

在 HelloWorldScene.h 的定义

static HelloWorld* create();

在 HelloWorldScene.m 的实现

HelloWorld* HelloWorld::create()
{
    //创建一个 HelloWorld 对象
    HelloWorld* helloWorld = new HellWorld();
    //判断 HelloWorld 对象是否创建以及初始化成功
    if (helloWorld && helloWorld->init())
    {
        //创建成功,初始化成功后,让其自动释放内存
        helloWorld->autorelease();
        //返回 HelloWorld 实例
        return helloWorld;
    } else {
        //如果创建失败,将安全删除 HelloWorld 对象
        delete helloWorld;
        helloWorld = NULL;
        return NULL;
    }
}
Copier après la connexion

好了,有宏的话,让我们剩下了不少代码的工作量啊。

接下来我们看看其他的吧


HelloWorldScene.cpp 的里面的函数的执行顺序是

Scene* HelloWorld::createScene();

bool HelloWorld::init();


Scene* HelloWorld::createScene()
{
    // 'scene' is an autorelease object
    auto scene = Scene::create();
    
    // 'layer' is an autorelease object
    auro layer = HelloWorld::create();

    // add layer as a child to scene
    scene->addChild(layer);

    // return the scene
    return scene;
}
Copier après la connexion

可以写成
Scene* HelloWorld::createScene()
{
    // 'scene' is an autorelease object
    Scene* scene = Scene::create();
    
    // 'layer' is an autorelease object
    Layer* layer = HelloWorld::create();

    // add layer as a child to scene
    scene->addChild(layer);

    // return the scene
    return scene;
}
Copier après la connexion

我们创建初始化一个场景后,然后又初始化一个层,将层放入场景里。


// on "init" you need to initialize your instance
bool HelloWorld::init()
{
    //////////////////////////////
    // 1. super init first
    if ( !Layer::init() )
    {
        return false;
    }
    
    Size visibleSize = Director::getInstance()->getVisibleSize();
    Point origin = Director::getInstance()->getVisibleOrigin();

    /////////////////////////////
    // 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
    auto closeItem = MenuItemImage::create(
                                           "CloseNormal.png",
                                           "CloseSelected.png",
                                           CC_CALLBACK_1(HelloWorld::menuCloseCallback, this));
    
	closeItem->setPosition(Point(origin.x + visibleSize.width - closeItem->getContentSize().width/2 ,
                                origin.y + closeItem->getContentSize().height/2));

    // create menu, it's an autorelease object
    auto menu = Menu::create(closeItem, NULL);
    menu->setPosition(Point::ZERO);
    this->addChild(menu, 1);

    /////////////////////////////
    // 3. add your codes below...

    // add a label shows "Hello World"
    // create and initialize a label
    
    auto label = LabelTTF::create("Hello World", "Arial", 24);
    
    // position the label on the center of the screen
    label->setPosition(Point(origin.x + visibleSize.width/2,
                            origin.y + visibleSize.height - label->getContentSize().height));

    // add the label as a child to this layer
    this->addChild(label, 1);

    // add "HelloWorld" splash screen"
    auto sprite = Sprite::create("HelloWorld.png");

    // position the sprite on the center of the screen
    sprite->setPosition(Point(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y));

    // add the sprite as a child to this layer
    this->addChild(sprite, 0);
    
    return true;
}
Copier après la connexion

虽然这段很长,不过包含了很多要学习的知识。


从表面上看,这段代码都在讲初始化的那些事。

细心观察,这个和Objective-C 的 init 方法多类似啊,只是不是返回对象。

我们精简一下这段代码的框架

bool HelloWorld::init()
{
    if ( !Layer::init() )
    {
        return false;
    }
    
    //初始化的内容
    
    return true;
}
Copier après la connexion


接下来看看里面进行的初始化的内容吧


向导演问了相关舞台的数据

Size visibleSize = Director::getInstance()->getVisibleSize();
Point origin = Director::getInstance()->getVisibleOrigin();
Copier après la connexion


然后搞一个按钮出来,这个按钮可以触发指定的事件


// 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
    auto closeItem = MenuItemImage::create(
                                           "CloseNormal.png",
                                           "CloseSelected.png",
                                           CC_CALLBACK_1(HelloWorld::menuCloseCallback, this));
    
	closeItem->setPosition(Point(origin.x + visibleSize.width - closeItem->getContentSize().width/2 ,
                                origin.y + closeItem->getContentSize().height/2));

    // create menu, it's an autorelease object
    auto menu = Menu::create(closeItem, NULL);
    menu->setPosition(Point::ZERO);
    this->addChild(menu, 1);
Copier après la connexion



或者写成

// 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
    MenuItemImage* closeItem = MenuItemImage::create(
                                           "CloseNormal.png",
                                           "CloseSelected.png",
                                           CC_CALLBACK_1(HelloWorld::menuCloseCallback, this));
    
	closeItem->setPosition(Point(origin.x + visibleSize.width - closeItem->getContentSize().width/2 ,
                                origin.y + closeItem->getContentSize().height/2));

    // create menu, it's an autorelease object
    Menu* menu = Menu::create(closeItem, NULL);
    menu->setPosition(Point::ZERO);
    this->addChild(menu, 1);
Copier après la connexion



MenuItemImage 类 创建一个对象,放入两张图片,和一个回调函数。

第一张图片是正常状态的,第二张是选择状态时的,回调函数,this 应该是目标

和iOS 创建按钮很相似,而区别是没有触发事件的手势设置。

接下来就是设置 MenuItemImage 类 实例的位置

通过 MenuItemImage 类 实例 创建一个 Menu 类的实例。

设置坐标

最后,将这个Menu类的实例加入当前 Layer中

接下来就是创建一个Label 类了。

根据官方发布文档所描述。3.0将采用一个Label 类 来创建不同类型的Label,而且优化了很多性能,这些也是后话了。

// 3. add your codes below...

    // add a label shows "Hello World"
    // create and initialize a label
    
    auto label = LabelTTF::create("Hello World", "Arial", 24);
    
    // position the label on the center of the screen
    label->setPosition(Point(origin.x + visibleSize.width/2,
                            origin.y + visibleSize.height - label->getContentSize().height));

    // add the label as a child to this layer
    this->addChild(label, 1);

    
Copier après la connexion


创建一个LabelTTF类的实例,参数1是内容,参数2是字体,参数3是字体大小

然后就是设置 这个实例的位置

然后加入层



// add "HelloWorld" splash screen"
    auto sprite = Sprite::create("HelloWorld.png");

    // position the sprite on the center of the screen
    sprite->setPosition(Point(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y));

    // add the sprite as a child to this layer
    this->addChild(sprite, 0);
Copier après la connexion
我们接下来就是把加载一张图片,全屏显示


首先用精灵创建一个实例,参数是一张图片。

然后设置精灵的位置。

最后把精灵加入层里,



最后我们看看回调函数吧,当点击按钮时,就会触发这个回调函数,因为已经关联上了。

void HelloWorld::menuCloseCallback(Ref* pSender)
{
#if (CC_TARGET_PLATFORM == CC_PLATFORM_WP8) || (CC_TARGET_PLATFORM == CC_PLATFORM_WINRT)
	MessageBox("You pressed the close button. Windows Store Apps do not implement a close button.","Alert");
    return;
#endif

    Director::getInstance()->end();

#if (CC_TARGET_PLATFORM == CC_PLATFORM_IOS)
    exit(0);
#endif
}
Copier après la connexion

这里实现的功能很简单,就是退出应用程序而已。



好了,就这样就结束了。接下来就是详情了。

表面上看,Cocos2d-X 真的不难~~~

呵呵

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover

AI Clothes Remover

Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Article chaud

R.E.P.O. Crystals d'énergie expliqués et ce qu'ils font (cristal jaune)
2 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Repo: Comment relancer ses coéquipiers
1 Il y a quelques mois By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island Adventure: Comment obtenir des graines géantes
4 Il y a quelques semaines By 尊渡假赌尊渡假赌尊渡假赌
Combien de temps faut-il pour battre Split Fiction?
3 Il y a quelques semaines By DDD

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Tutoriel de base de PHP : du débutant au maître Tutoriel de base de PHP : du débutant au maître Jun 18, 2023 am 09:43 AM

PHP est un langage de script open source côté serveur largement utilisé qui peut gérer toutes les tâches de développement Web. PHP est largement utilisé dans le développement Web, notamment pour ses excellentes performances en matière de traitement dynamique des données, il est donc apprécié et utilisé par de nombreux développeurs. Dans cet article, nous expliquerons les bases de PHP étape par étape pour aider les débutants à devenir compétents. 1. Syntaxe de base PHP est un langage interprété dont le code est similaire au HTML, CSS et JavaScript. Chaque instruction PHP se termine par un point-virgule ;

Mar 22, 2024 pm 09:39 PM

Le langage Go est un langage compilé à typage statique développé par Google. Ses fonctionnalités concises et efficaces ont attiré l'attention et l'amour des développeurs. Dans le processus d’apprentissage du langage Go, la maîtrise des connaissances de base sur les variables est une étape cruciale. Cet article expliquera les connaissances de base telles que la définition, l'affectation et l'inférence de type de variables dans le langage Go à travers des exemples de code spécifiques pour aider les lecteurs à mieux comprendre et maîtriser ces points de connaissances. Dans le langage Go, vous pouvez utiliser le mot-clé var pour définir une variable, qui est le format du type de variable var nom de variable.

Introduction aux bases de PHP : Comment utiliser la fonction echo pour afficher du contenu textuel Introduction aux bases de PHP : Comment utiliser la fonction echo pour afficher du contenu textuel Jul 30, 2023 pm 05:38 PM

Introduction de base à PHP : Comment utiliser la fonction echo pour générer du contenu textuel. Dans la programmation PHP, vous devez souvent afficher du contenu textuel sur une page Web. Dans ce cas, vous pouvez utiliser la fonction echo. Cet article explique comment utiliser la fonction echo pour générer du contenu textuel et fournit un exemple de code. Avant de commencer, assurez-vous d'abord d'avoir installé PHP et configuré l'environnement d'exécution. Si PHP n'est pas encore installé, vous pouvez télécharger la dernière version stable sur le site officiel de PHP (https://www.php.net).

Explication détaillée des fonctions du langage C : analyse basique à avancée et complète de l'utilisation des fonctions Explication détaillée des fonctions du langage C : analyse basique à avancée et complète de l'utilisation des fonctions Feb 18, 2024 pm 02:25 PM

Encyclopédie des fonctions du langage C : de base à avancée, explication détaillée de la façon d'utiliser les fonctions, des exemples de code spécifiques sont nécessaires Introduction : Le langage C est un langage de programmation largement utilisé, et ses fonctions puissantes et sa flexibilité en font le premier choix de nombreux développeurs. En langage C, la fonction est un concept important. Elle peut combiner un morceau de code en un module indépendant, améliorant ainsi la réutilisabilité et la maintenabilité du code. Cet article présentera l'utilisation des fonctions du langage C à partir des bases et progressera progressivement pour aider les lecteurs à maîtriser les compétences d'écriture de fonctions. 1. Définition et appel de fonctions en C

L'instruction create peut-elle être utilisée pour créer une structure de table et ajouter de nouveaux enregistrements ? L'instruction create peut-elle être utilisée pour créer une structure de table et ajouter de nouveaux enregistrements ? Jul 25, 2022 am 11:25 AM

ne peut pas. La fonction de l'instruction CREATE est de créer une structure de table, mais elle ne peut pas ajouter de nouveaux enregistrements. Vous pouvez utiliser l'instruction INSERT pour ajouter de nouveaux enregistrements. L'instruction CREATE peut être utilisée pour créer une nouvelle table dans la base de données et spécifier les attributs et les contraintes des colonnes de données. Cependant, la table nouvellement créée est une table vide et nécessite l'utilisation de l'instruction INSERT pour ajouter de nouveaux enregistrements. L'instruction INSERT est utilisée pour insérer une ou plusieurs lignes de données de tuple dans une table existante de la base de données.

Ne manquez pas votre chance d'obtenir dès maintenant votre certification Basic C# gratuite auprès de Microsoft Ne manquez pas votre chance d'obtenir dès maintenant votre certification Basic C# gratuite auprès de Microsoft Sep 01, 2023 pm 12:45 PM

Appel à tous les développeurs C# ! Microsoft et l'organisation à but non lucratif freeCodeCamp annoncent le lancement d'une nouvelle certification mondiale gratuite Basic C#. Cette certification est conçue pour aider les développeurs de tous niveaux à apprendre les bases de C#, un langage de programmation populaire utilisé pour créer une variété d'applications, et vous pouvez l'afficher dans votre profil LinkedIn. Cette certification comprend 35 heures de formations Microsoft Learn et un examen de 80 questions hébergé sur freeCodeCamp. Ce cours couvre des sujets tels que les variables, les types de données, les structures de contrôle et la programmation orientée objet. « Notre certification Basic C# fournit exactement cela : la preuve de votre capacité à maîtriser ce langage polyvalent.

Utilisation des fonctions PHP : des bases aux avancées Utilisation des fonctions PHP : des bases aux avancées Jun 15, 2023 pm 11:11 PM

PHP est un langage de script côté serveur largement utilisé pour développer des sites Web dynamiques, des applications Web et d'autres services Internet. Dans le processus de développement d'applications PHP, l'utilisation de fonctions peut contribuer à simplifier le code, à améliorer la réutilisabilité du code et à réduire les coûts de développement. Cet article présentera l'utilisation de base et l'utilisation avancée des fonctions PHP. 1. Utilisation de base des fonctions PHP 1. Définir des fonctions En PHP, utilisez le mot-clé function pour définir des fonctions, par exemple : functiongreet($name){

Notes d'étude PHP : syntaxe de base et définition des variables Notes d'étude PHP : syntaxe de base et définition des variables Oct 09, 2023 am 08:03 AM

Notes d'étude PHP : syntaxe de base et définition des variables À l'ère d'Internet d'aujourd'hui, PHP (Hypertext Preprocessor), en tant que langage de script serveur largement utilisé, est favorisé par de plus en plus de développeurs. Cet article vous présentera la syntaxe de base de PHP et la définition des variables, et fournira des exemples de code spécifiques pour aider les débutants à mieux le comprendre et le maîtriser. 1. Syntaxe de base de PHP Marquages ​​du code PHP Dans le code PHP, on utilise souvent "<?php" et "?&

See all articles