zoukankan      html  css  js  c++  java
  • cocos2dx 3.x以上(Sprite精灵类的相关属性与创建)

    //

    //  MainScene.cpp

    //  helloworld

    //

    //  Created by apple on 16/9/19.

    //

    //

     

    #include "MainScene.hpp"

    Scene * MainScene::createScene()

    {

         auto scene = Scene::create();

    //    CCScene * scene = CCScene::create();// 创建场景

        //创建层

        MainScene *layer = MainScene::create();

        scene->addChild(layer);

        return scene;

    }    

     

     

     

     

    bool MainScene::init(){

        if (!Layer::init()) {

            return false;

        }

        //获取屏幕大小

        Size visibleSize = Director::getInstance()->getVisibleSize();

     

        //创建精灵的六种方法

        //方法一

        auto sprite1 = Sprite::create("Flag_1.png");

        sprite1->setPosition(Vec2(visibleSize.width*0.2,visibleSize.height*0.7));

        this->addChild(sprite1);

        

        //方法二

        auto sprite2 = Sprite::create("Flag_1.png",Rect(0,0,48,36));

        sprite2->setPosition(Vec2(visibleSize.width*0.4,visibleSize.height*0.7));

        this->addChild(sprite2);

        

        //创建2D纹理

        auto texture1 = Director::getInstance()->getTextureCache()->addImage("Flag_1.png");

        //auto texture1 = TextureCache::sharedTextureCache()->addImage("Flag_1.png");  //cocos2d-x 3.0已移除该方法

        

        //方法三

        auto sprite3 = Sprite::createWithTexture(texture1);

        sprite3->setPosition(Vec2(visibleSize.width*0.6,visibleSize.height*0.7));

        this->addChild(sprite3);

        

        //方法四

        auto sprite4 = Sprite::createWithTexture(texture1,Rect(0,0,48,36));

        sprite4->setPosition(Vec2(visibleSize.width*0.8,visibleSize.height*0.7));

        this->addChild(sprite4);

        

        //创建精灵帧

        auto frame = SpriteFrame::create("Flag_1.png",Rect(0,0,48,36));

        

        //方法五

        auto sprite5 = Sprite::createWithSpriteFrame(frame);

        sprite5->setPosition(Vec2(visibleSize.width*0.3,visibleSize.height*0.3));

        this->addChild(sprite5);

        

        //    //方法六

        //    SpriteFrameCache::sharedSpriteFrameCache()->addSpriteFramesWithFile("img.plist");

        //

        //    auto sprite6 = Sprite::createWithSpriteFrameName("HelloWorld.png");

        //    sprite6->setPosition(Vec2(visibleSize.width*0.7, visibleSize.height*0.3));

        //    this->addChild(sprite6);

        

        

        //**************************//

        //精灵常用处理操作

        //设置缩放

        sprite1->setScale(1.5f,1.5f);

        //    sprite1->setScaleX(1.5f);

        //    sprite1->setScaleY(1.5f);

        

        //设置旋转,大于零顺时针旋转

        sprite2->setRotation(60.0f);

        //    sprite2->setRotationX(60.0f);

        //    sprite2->setRotationY(60.0f);

     

        //设置倾斜

        sprite3->setSkewX(30.0f);

        //    sprite3->setSkewY(30.0f);

      

        //设置是否可见

        sprite4->setVisible(true);

        

        //设置颜色

        sprite1->setColor(Color3B(0,0,255));

        

        //设置透明度

        sprite2->setOpacity(100);

     

        //相关属性

    auto sprite = Sprite::create("CloseSelected.png");//创建一个精灵

    //    Sprite * sprite = CCSprite::create("XX图片");

        sprite ->setPosition(50, 60);// 坐标(左下为00)

        sprite->setAnchorPoint(Vec2(0, 0));//设置锚点为左下角,默认为                     ccp(0.5,0.5)中心点

        sprite ->setRotation(90);// 精灵图片旋转90(当然也可以90.3f)浮点型

        sprite ->setScale(2.0f);// //放大2倍,参数为比例,1保持不变,0.5代表50%2代表200%精灵图片放大1倍(长宽都是),正常是1,缩小1倍是0.5

        sprite ->setScaleZ(100);// 相当于层级关系,当有两个精灵重叠的时候,数值越大越靠前

        sprite ->setOpacity(255);//设置透明度为完全不透明(范围0255

        sprite ->setFlippedX(false);//X轴镜像反转

        sprite ->setFlippedY(false);//Y轴镜像反转

        sprite ->setVisible(true);//设置隐藏,默认为可见

        sprite ->setTextureRect(Rect(10, 10, 30, 30));//起始点坐标(做上角坐标系),宽高

    //    auto visibleSize = Director::getInstance()->getVisibleSize();

    //    Vec2 origin = Director::getInstance()->getVisibleOrigin();

    //    sprite->setPosition(Vec2(visibleSize.width/2 + origin.x, visibleSize.height/2 + origin.y));

        this->addChild(sprite);// 添加到层

        

        

        // 注册回调,用一个宏来包装一下(函数名不要有函数)

        schedule(schedule_selector(MainScene::update));

        

        // 贞回调可用设置选择器与时间

        schedule(schedule_selector(MainScene::update), 1);// 一秒调用一次

     

        

     

        return true;

    }

     

       

     

     

     

    // 每秒调用60

    void MainScene::update(float t){

        log("ok");

        // 修改坐标点,让它向右平移(首先要把精灵换成全局变量,因为这里需要)

        auto sprite = Sprite::create("CloseSelected.png");

        // 获取到当前精灵的坐标,X轴+1Y轴不加

        sprite -> setPosition(Point(sprite->getPosition(), Vec2(1,0)));

        // 获取到当前的旋转角度,调用时+1

        sprite -> setRotation(sprite->getRotation()+1);

    }

     

     

  • 相关阅读:
    Best Time to Buy and Sell Stock
    Remove Nth Node From End of List
    Unique Paths
    Swap Nodes in Pairs
    Convert Sorted Array to Binary Search Tree
    Populating Next Right Pointers in Each Node
    Maximum Subarray
    Climbing Stairs
    Unique Binary Search Trees
    Remove Duplicates from Sorted Array
  • 原文地址:https://www.cnblogs.com/luorende/p/5911034.html
Copyright © 2011-2022 走看看