zoukankan      html  css  js  c++  java
  • cocos2d心得关于精灵帧缓存

    在cocos2d中,精灵帧缓存CCSpriteFrameCache是用来存储精灵帧的。它没有特别的属性,只存储了一些用来管理CCSpriteFrame的方法。

    以一个例子来说明,一般在又纹理图集的程序中,我们使用如下语句添加多个精灵帧,来构成精灵帧缓存:

    CCSpriteFrameCache* frameCache = [CCSpriteFrameCache  sharedSpriteFrameCache];

    [frameCache addSpriteFramesWithFile:@"game-art.plist"];

    其中该方法从plist属性文件中添加多个精灵帧。纹理将会被自动载入,纹理的扩展名则使用.png替代.plist。

    在使用的过程中通过如下语句就可以:

    CCSpriteFrame* bulletFrame = [[CCSpriteFrameCache sharedSpriteFrameCache] spriteFrameByName:@"bullet.png"];

    该语句生成精灵帧。

    CCSpriteBatchNode* batch = [CCSpriteBatchNode batchNodeWithTexture:bulletFrame.texture];

    [selfaddChild:batch z:1tag:GameSceneNode TagBulletSpriteBatch];

    然后在通过如上语句生成了CCSpriteBatchNode并添加进子节点。

    最后还有一点想说明的:今天刚刚学到的:

    导航栈是retain的,push进navigationcontroller之后,需要把已经push进去的controller release掉。

    对delegate在@property的申明应该用assign而不应该用retain的,应该牢记。

    个人对 ios delegate 的理解《转载》


    之前一直对iOS的delegate不是很明白,一直在网上找例子看想了解清楚,但一直没理解。今天做项目的时候碰到了需要使用delegate的时候,没办法只能自己硬着头皮试试了。凭着之前对delegate的理解,自己慢慢琢磨现在算是得出一点经验吧,分享一下。


    上图中,popover后面的是主view controller,popover里面装的是第二个viewcontroller,我们的目的是通过点击popover中的按钮在主view controller中实现对应的方法。


    首先,先在第二个viewcontroller的.h头文件中申明我们的delegate:

    @protocol MSelectToolViewControllerDelegate

    - (void) TOOL_MEASURE_LINE;
    - (void) TOOL_MEASURE_FREE_LINE;

    @end


    然后,设置一个可以set、get的变量:

    @property (nonatomic, retain) id<MSelectToolViewControllerDelegate> delegate;
    再申明popover中按钮对应的方法,(直接从xib文件连线就可以完成的):


    - (IBAction)measureLineTool:(id)sender;
    - (IBAction)measureFreeLineTool:(id)sender;

    然后直接在第二个viewcontroller的.m实现文件中具体实现按钮的方法:
    <pre class="objc; toolbar: true; auto-links: false;">

    - (IBAction)measureLineTool:(id)sender {
        [delegate TOOL_MEASURE_LINE];
    }

    - (IBAction)measureFreeLineTool:(id)sender {
        [delegate TOOL_MEASURE_FREE_LINE];
    }

    本例中是直接调用先前delegate申明的方法。

    接下来的工作在主viewcontroller中完成了。。。。

    在主view controller的.h头文件中import进来第二个view controller的.h头文件
    并在主viewcontroller要遵守的协议中加入之前定义的delegate的名称


    @interface MotiConnectViewController : UIViewController<UIScrollViewDelegate, UIImagePickerControllerDelegate, UINavigationControllerDelegate, UIPopoverControllerDelegate, MSelectToolViewControllerDelegate>



    最后在主viewcontroller中设置Delegate的委托对象并实现Delegate中定义的方法,类似这样:
    <pre class="objc; toolbar: true; auto-links: false;">

    MSelectToolViewController *mSelectToolViewController = [[MSelectToolViewController alloc] initWithNibName:nil bundle:nil];
        mSelectToolViewController.delegate = self;

    - (void)TOOL_MEASURE_LINE
    {
        //在这里该干嘛干嘛,填入你想要实现的代码
    }

    - (void)TOOL_MEASURE_FREE_LINE
    {
        //在这里该干嘛干嘛,填入你想要实现的代码
    }

  • 相关阅读:
    JavaWeb——Servlet开发3
    8.3.3
    8.3.2
    8.3
    8.2
    8.1
    7.3.9
    7.3.8.3
    7.3.8.2
    7.3.8.1
  • 原文地址:https://www.cnblogs.com/baozou/p/3268646.html
Copyright © 2011-2022 走看看