当前位置:  编程技术>移动开发
本页文章导读:
    ▪(转)灵便使用精灵可视区域(TextureRect)与锚点(anchorPoint),并结合可视区域与锚点制作进度条        (转)灵活使用精灵可视区域(TextureRect)与锚点(anchorPoint),并结合可视区域与锚点制作进度条!   Himi  原创, 欢迎转载,转载请在明显处注明! 谢谢。                 原文地址:http://blog.csdn.........
    ▪ (转)解决滚屏背景/拼接地图有黑边(缝隙)以及禁止游戏中自动锁屏有关问题        (转)解决滚屏背景/拼接地图有黑边(缝隙)以及禁止游戏中自动锁屏问题!    Himi  原创, 欢迎转载,转载请在明显处注明! 谢谢。                        原文地址:http://blog.csdn.net/xiao.........
    ▪ (转)平添本地通知(UILocalNotification)以及添加系统组件滚动视图(UIScrollView)       (转)添加本地通知(UILocalNotification)以及添加系统组件滚动视图(UIScrollView)!   Himi  原创, 欢迎转载,转载请在明显处注明! 谢谢。                        原文地址:http://blog.csdn.net/xiao.........

[1](转)灵便使用精灵可视区域(TextureRect)与锚点(anchorPoint),并结合可视区域与锚点制作进度条
    来源: 互联网  发布时间: 2014-02-18
(转)灵活使用精灵可视区域(TextureRect)与锚点(anchorPoint),并结合可视区域与锚点制作进度条!

 

Himi  原创, 欢迎转载,转载请在明显处注明! 谢谢。

 

 

 

 

 

      原文地址:http://blog.csdn.net/xiaominghimi/article/details/6911387


      今天Himi单用一篇博文来给童鞋们介绍精灵相关的两个常用的细节知识点;

      首先来介绍第一个知识点:精灵可视区域;

      不管在哪个移动平台上进行开发游戏都会接触使用到可视区域,比如Kjava(J2me)平台的setClip方法,Android的clipRect方法等等,那么在iOS上也一样存在,这里我们介绍cocos2d引擎中的可视区域得函数是setTextureRect;

      可能没有接触过游戏得童鞋不明白其概念,那么Himi就简单概述下:

      所谓可视区域就是在一个完整的表面上对其设置一定大小的区域,让其只显示设置的区域的面,其他部分隐藏不显示出来;最常用的是将一张图片设置一个可视区域,只让这张图展示设置的区域;

      那么这里在啰嗦几句,在cocos2d中精灵CCSprite的可视区域一般可以通过两种方式来设置:

1.在创建精灵的时候进行设置;2.在创建后进行设置;举例如下:

        新建一个cocos2d项目,然后在HelloWorldLayer.m中init方法中创建一个精灵,代码如下:

 

view plain
  • //---正常创建的icon图  
  • CCSprite * spriteOld =[CCSprite spriteWithFile:@"icon.png"];  
  • spriteOld.position=ccp(80,100);  
  • [self addChild:spriteOld];  
  • //---创建时设置30宽30高的可视区域  
  • CCSprite * spriteNew =[CCSprite spriteWithFile:@"icon.png" rect:CGRectMake(0, 0, 30,30)];  
  • spriteNew.position=ccp(150,100);  
  • [self addChild:spriteNew];  
  • //---创建后对其设置30宽30高的可视区域  
  • CCSprite * spriteT =[CCSprite spriteWithFile:@"icon.png"];  
  • [spriteT setTextureRect:CGRectMake(10, 10, 30, 30)];  
  • spriteT.position=ccp(230,100);  
  • [self addChild:spriteT];   

  •      上面我创建了3个精灵,第一个没有设置可是区域的icon精灵,第二个和第三个是设置了可视区域宽30高30的精灵,但是第二个和第三个精灵的可是区域宽高相同,但是起始点不同;而且第二个是从创建精灵的时候设置可视区域,第三个精灵则是创建精灵后进行设置的,设置的地方不一样,功能是一样的;

     

        需要详细讲解的是不管用以上两种设置可视区域的哪种方法都需要传入一个CGRect对象,这个CGrect参数有四个,坐标x,y,以及宽高w,y;

        那么CGRect在可是区域的函数中的作用如下:

        CGRect的x,y表示从这个精灵贴图的(x,y)坐标开始设置可视区域,(w,h)可视区域的大小;    

         下面是运行效果图,童鞋们通过三个精灵(从左往右)之间的对比就很容易明白的:

     


          下面介绍第二个知识点:精灵锚点(anchorPoint);

            渲染锚点的作用就是在渲染图片的时候确定其渲染的方式,一般常用的锚点有以下几种:

          图片左上角、图片右上角、图片中心点、图片左下角、图片右下角等等

          首先童鞋们需要知道一点,在cocos2d引擎中在layer中添加渲染精灵贴图的时候默认的锚点是其中心点;

          那么由于cocos2d中layer的原点(0,0)点是屏幕的左下角,所以如果默认创建一个精灵添加到layer中的话,是精灵的中心点放置在layer的原点上,即精灵图片显示在屏幕中只是精灵的宽一半高一半,如下图:

              

                    对应代码如下:

     

    view plain
  • //---使用默认锚点  
  • CCSprite * spriteOld =[CCSprite spriteWithFile:@"icon.png"];   
  • [self addChild:spriteOld];  

  •       那么如果我们设置其精灵的锚点为左下角则正好将精灵icon完整显示出来,因为精灵的左下角正好与layer的原点重合,如下图:

     

             

              对应代码如下:

     

    view plain
  • //---设置精灵锚点为左下角  
  • CCSprite * spriteNew =[CCSprite spriteWithFile:@"icon.png"];  
  • spriteNew.anchorPoint=ccp(0,0);  
  • [self addChild:spriteNew];  

  •          设置的方法是精灵的anchorPoint属性,赋值的是个CGPoint对象,其CGPoint中的x与y最大取1,表示最右与最下;

     

     

          ---------以上介绍的过于简单,那么下面Himi利用可视区域与锚点的特性制作一种从左往右样式简单进度条;

          首先我们仍然使用cocos2d的icon图作为一个进度条,然后让其从左往右不断显示出来;步骤如下:

        第一步:创建一个精灵,设置精灵的锚点为x=0(最左侧),y=0.5(精灵的y轴中点),代码如下:

    view plain
  • //---使用默认锚点  
  • CCSprite * spriteP =[CCSprite spriteWithFile:@"icon.png"];    
  • spriteP.position=ccp(size.width*0.5,size.height*0.5);//设置坐标  
  • spriteP.anchorPoint=ccp(0,0.5);//设置锚点  
  • [self addChild:spriteP z:0 tag:88]; //将精灵添加到layer中显示  
  •  

                细心的童鞋可能会发现以上代码运行后发现精灵并不显示在屏幕中点,嗯,因为我们设置了精灵的锚点,现在精灵的左下角与屏幕中点重合着;

       第二步:添加一个变量用于记录当前进度:

    view plain
  • @interface HelloWorldLayer : CCLayer  
  • {  
  •     float currentShowRect;//当前可视区域的大小  
  • }  
  •    然后开启一个刷新函数:
      

     

     

    view plain
  • -(id) init  
  • {  
  •     [self scheduleUpdate];  
  • }  
  • -(void)update:(ccTime)himi{//每一帧都会执行的函数  
  •   
  • }  
  •    

     

       最后一步:在刷新函数中书写从左往右慢慢显示icon进度条逻辑代码,代码如下:

     

    view plain
  • -(void)update:(ccTime)himi{//每一帧都会执行的函数  
  •     //实现进度条逻辑  
  •     CCSprite *sprite =(CCSprite*)[self getChildByTag:88];  
  •     currentShowRect++;  
  •     if(currentShowRect>=100){  
  •         currentShowRect=0;  
  •     }  
  •     [sprite setTextureRect:CGRectMake(0, 0, currentShowRect,sprite.position.y)];  
  •       
  • }  

  •     运行截图如下:(icon显示区域越来越大,不断循环)

     



           OK,本篇介绍完毕,可能童鞋们会认为本篇知识点过于简单,如果你是个经常关注Himi博客的童鞋,那么你会发现Himi基本上所有的博文都是介绍了很多细节方面的问题,原因一,千篇一律的文章太多,别人都写那么多了,我也没必要赘述。原因二,Himi常说的,细节决定一切,虽然说得绝对了些,但是事实开发项目中基本都是细节问题困扰着大家;

          好了,不多说了,继续忙了;


        
    [2] (转)解决滚屏背景/拼接地图有黑边(缝隙)以及禁止游戏中自动锁屏有关问题
        来源: 互联网  发布时间: 2014-02-18
    (转)解决滚屏背景/拼接地图有黑边(缝隙)以及禁止游戏中自动锁屏问题!

     

     Himi  原创, 欢迎转载,转载请在明显处注明! 谢谢。

     

     

     

     

     

     

               原文地址:http://blog.csdn.net/xiaominghimi/article/details/6926913


         本章节主要为大家介绍在游戏开发过程中经常遇到的两个问题;

         1. 解决滚屏背景或拼接地图有黑边!

          对于游戏开发中,背景(游戏地图)是必要的元素之一,那么对于大部分游戏的背景都是动态,或者不断移动的;例如RPG中的背景随着人物、主角而移动,那么一般情况下背景都是由地图编辑器(图块)拼出来的,要不就是直接一整张大图去显示,在或者就是将一张大图进行裁减成N张,然后再进行拼接完成等等;

          那么对于背景(地图)元素中存在的重复图块很少的话基本上就没有利用地图编辑器的必要了;在这里Himi不来介绍如何在cocos2d中使用地图编辑器做背景地图 ,而是介绍在cocos2d中制作滚动地图时利用拼接地图方式遇到的黑边问题;

         如下图所示,背景是由3张图片拼接而成,如下3张图:

                                                   

         然后Himi将此3张作为3个精灵然后顺次绘制在屏幕上代码如下: 

     

    view plain
  • //将三张图拼成一张完整背景   
  •         CGSize screenSize =[[CCDirector sharedDirector]winSize];  
  •         CCSprite *bgTile1 =[CCSprite spriteWithFile:@"himi_01.png"];  
  •         bgTile1.position=ccp(bgTile1.contentSize.width*0.5,screenSize.height*0.5);  
  •         CCSprite *bgTile2 =[CCSprite spriteWithFile:@"himi_02.png"];  
  •         bgTile2.position=ccp(bgTile1.position.x+bgTile1.contentSize.width,bgTile1.position.y);  
  •         CCSprite *bgTile3 =[CCSprite spriteWithFile:@"himi_03.png"];  
  •         bgTile3.position=ccp(bgTile2.position.x+bgTile2.contentSize.width,bgTile2.position.y);  
  •         [self addChild:bgTile1 z:0 tag:11];  
  •         [self addChild:bgTile2 z:0 tag:22];  
  •         [self addChild:bgTile3 z:0 tag:33];  
  •  

    此时运行的截图如下:

                   


        从上图童鞋们就可以看到拼接有裂缝,那么接着让3个精灵从左向右不断的x轴+1进行移动,代码如下:

     

    view plain
  • //----init函数中   
  •        //每0.1秒刷新函数move  
  •         [self schedule:@selector(move) interval:0.1];  
  • //move函数  
  • -(void)move{  
  •     CCSprite *tempSprite =(CCSprite*)[self getChildByTag:11];  
  •     tempSprite.position=ccpAdd(tempSprite.position, ccp(1,0));  
  •     tempSprite =(CCSprite*)[self getChildByTag:22];  
  •     tempSprite.position=ccpAdd(tempSprite.position, ccp(1,0));  
  •     tempSprite =(CCSprite*)[self getChildByTag:33];  
  •     tempSprite.position=ccpAdd(tempSprite.position, ccp(1,0));  
  • }  

  • 运行截图如下:

     

                  


         这时当移动到一定距离时候会发现刚才的缝隙消失了,是消失了,通过以上两张运行效果图可以说明:

         在cocos2d中如图你使用拼接背景地图的方式去做的话,每处拼接处在移动时都会时不时的出现黑边(裂缝),至于如何解决我想童鞋们第一想法就是在裁图的时候多切出一像素的方法,第一张比如原来是100,故意裁出101,第二张绘制的时候X轴前一个像素...以此类推,还有些童鞋认为是美工的原因,可能在裁图的时候有透明像素的存在造成,当然美工裁图的不仔细确实是个不可排除的原因,但是最终解决的方案应该是将精灵设置贴图无锯齿的属性,这样就可以完美解决此问题,设置精灵贴图无锯齿方法如下:

     

    view plain
  • [CCSprite.texture setAliasTexParameters];  

  •     我们将这句添加上之后再次运行,代码更改如下:

     

     

    view plain
  • //将三张图拼成一张完整背景   
  • CGSize screenSize =[[CCDirector sharedDirector]winSize];  
  • CCSprite *bgTile1 =[CCSprite spriteWithFile:@"himi_01.png"];  
  • bgTile1.position=ccp(bgTile1.contentSize.width*0.5,screenSize.height*0.5);  
  • CCSprite *bgTile2 =[CCSprite spriteWithFile:@"himi_02.png"];  
  • bgTile2.position=ccp(bgTile1.position.x+bgTile1.contentSize.width,bgTile1.position.y);  
  • CCSprite *bgTile3 =[CCSprite spriteWithFile:@"himi_03.png"];  
  • bgTile3.position=ccp(bgTile2.position.x+bgTile2.contentSize.width,bgTile2.position.y);  
  • //让3个精灵都设置贴图无锯齿  
  • [bgTile1.texture setAliasTexParameters];  
  • [bgTile2.texture setAliasTexParameters];  
  • [bgTile3.texture setAliasTexParameters];  
  • [self addChild:bgTile1 z:0 tag:11];  
  • [self addChild:bgTile2 z:0 tag:22];  
  • [self addChild:bgTile3 z:0 tag:33];  
  •  

    再次运行效果图如下:

                   

      OK,完美解决;


     2.下面介绍第二个问题:如何禁止手机自动锁屏的问题;

         对于手机自动锁屏的问题一般都是在项目尾声的时候发现由于手机自动锁屏所带来的各种问题,例如,在cocos2d中我们调用暂停游戏的函数后,如果用户无操作,手机自动锁屏后,解锁再次进入游戏就会发现游戏不处于暂停了,(如果你有暂停界面的话,你将看到你暂停界面存在,而后面的游戏照常运行- -)

        那么这里Himi给出在应用中禁止手机自动锁屏的代码,如下:

     

    view plain
  • [[UIApplication sharedApplication] setIdleTimerDisabled:YES];  

  •  

         OK,本章介绍的知识点虽然很少解决的方法也很简单,但是也是游戏中最容易遇到的两个问题;

     

         那么这里肯定会有不少童鞋认为本身一句代码的事情非写这么多进行说明,嗯 ,确实写的过于详细,但是Himi之所以写这么详细主要还是想让还没有遇到此类问题的童鞋清晰化此类问题出现的原因,这样能让更多童鞋减少以后遇到此问题的疑问~


        
    [3] (转)平添本地通知(UILocalNotification)以及添加系统组件滚动视图(UIScrollView)
        来源: 互联网  发布时间: 2014-02-18
    (转)添加本地通知(UILocalNotification)以及添加系统组件滚动视图(UIScrollView)!

     

    Himi  原创, 欢迎转载,转载请在明显处注明! 谢谢。

     

     

     

     

     

                 原文地址:http://blog.csdn.net/xiaominghimi/article/details/6897028


              首先申明下:希望大家转载的时候不要忘记给原文连接,看到不少论坛转载完全变成他们论坛自己原创了~ 请大家配合哈~谢谢~娃哈哈;

             本篇Himi为童鞋们介绍两个常用的知识点:一个是在Cocos2d中添加UILocalNotification本地化通知,另外一个就是添加UIScrollViewiOS系统组件实现滚动字幕效果;

              对于UILocalNotification这个本地化通知功能实现比较简单,用途很广,最大的用途就是阶段性的让用户回归我们的应用中;那么下面就直接上代码:

              因为是添加到cocos2d引擎中,另一方面一般我们需要用户进入我们应用后就开启通知功能的;所以我们将代码放在 AppDelegate.m 类中的applicationDidFinishLaunching中,代码如下:

     

    view plain
  • - (void) applicationDidFinishLaunching:(UIApplication*)application  
  • {  
  •     ...  
  •     application.applicationIconBadgeNumber = 0;//应用程序右上角的数字=0(消失)  
  •     [[UIApplication sharedApplication] cancelAllLocalNotifications];//取消所有的通知  
  •     //------通知;  
  •     UILocalNotification *notification=[[UILocalNotification alloc] init];   
  •     if (notification!=nil) {//判断系统是否支持本地通知  
  •         notification.fireDate=[NSDate dateWithTimeIntervalSinceNow:kCFCalendarUnitDay];//本次开启立即执行的周期  
  •         notification.repeatInterval=kCFCalendarUnitDay;//循环通知的周期  
  •         notification.timeZone=[NSTimeZone defaultTimeZone];  
  •         notification.alertBody=@"哇,我的女神,你怎了?";//弹出的提示信息  
  •         notification.applicationIconBadgeNumber=1; //应用程序的右上角小数字  
  •         notification.soundName= UILocalNotificationDefaultSoundName;//本地化通知的声音  
  •         notification.alertAction = NSLocalizedString(@"营救女神!", nil);  //弹出的提示框按钮  
  •         [[UIApplication sharedApplication]   scheduleLocalNotification:notification];  
  •     }   
  •  ...  
  • }  
  •  

     

               这里Himi首先是将之前的所有通知都取消掉,防止开启多个循环本地化通知,并且让应用右上角的数字设置为0,这里设置为0就相当与取消数字的显示了;

               然后需要说明的是循环通知的周期,iOS提供如下一些周期:

    view plain
  • enum {  
  •     kCFCalendarUnitEra = (1UL << 1),  
  •     kCFCalendarUnitYear = (1UL << 2),  
  •     kCFCalendarUnitMonth = (1UL << 3),  
  •     kCFCalendarUnitDay = (1UL << 4),  
  •     kCFCalendarUnitHour = (1UL << 5),  
  •     kCFCalendarUnitMinute = (1UL << 6),  
  •     kCFCalendarUnitSecond = (1UL << 7),  
  •     kCFCalendarUnitWeek = (1UL << 8) /* CF_DEPRECATED(10_4, 10_7, 2_0, 5_0) */,  
  •     kCFCalendarUnitWeekday = (1UL << 9),  
  •     kCFCalendarUnitWeekdayOrdinal = (1UL << 10),  
  • #if MAC_OS_X_VERSION_10_6 <= MAC_OS_X_VERSION_MAX_ALLOWED || __IPHONE_4_0 <= __IPHONE_OS_VERSION_MAX_ALLOWED  
  •     kCFCalendarUnitQuarter = (1UL << 11),  
  • #endif  
  • #if MAC_OS_X_VERSION_10_7 <= MAC_OS_X_VERSION_MAX_ALLOWED || __IPHONE_5_0 <= __IPHONE_OS_VERSION_MAX_ALLOWED  
  •     kCFCalendarUnitWeekOfMonth = (1UL << 12),  
  •     kCFCalendarUnitWeekOfYear = (1UL << 13),  
  •     kCFCalendarUnitYearForWeekOfYear = (1UL << 14),  
  • #endif  
  • };  
  •         下面是真机截图:

     

                  




              以上是在我真机iOS5系统上的测试效果,主界面中的展示效果以及通知栏内的通知效果,在iOS5之前都会出现类似弹出一个框,框中有你设置的按钮名称和提示文字~

             OK,这个知识点就不多说了,比较easy;下面介绍如何在cocos2d中添加UIScrollView;

            对于UIScrollView视图,比较常用,Android也有此视图,那么它用途比较广,最常用也是最容易想到的就是利用此功能实现游戏中公司介绍、字幕滚动效果,那么Himi就简单的实现在cocos2d中利用UIScrollView添加一个无线循环滚动的小例子加以讲解;

            注意:对于还不知道如何在cocos2d中添加系统组建的童鞋请移步到《【Cocos2d游戏开发之七】在cocos2d中添加/删除系统组件,并解决View设置透明会影响View中的其他组件的问题!》此贴学习先,下面开始添加:

             首先我们新建一个cocos2d项目,然后添加显示一个自定义的MyView(UIViewController)的视图,并且在MyView.xib中添加了一些label和ScrollView组件中;

              如下图:

                


               然后修改MyView.h,和MyView.m类,在MyView.h中如下代码:

     

    view plain
  • @interface MyView : UIViewController<UIScrollViewDelegate>{  
  •     IBOutlet UIScrollView *scrollView;  
  • }  
  • @property(nonatomic,retain)IBOutlet UIScrollView *scrollView;  
  • @end  

  •  

      .h类中添加了一个UIScrollView并使用UIScrollViewDelegate协议,并IBOutlet出去,接着让xib文件中的UIScrollView组件连接此scrollView;


              之后在MyView.m中添加如下代码:

             1.添加一行如下代码:

    view plain
  • @synthesize scrollView;  
  •          2.在- (void)viewDidLoad{}中添加如下代码:

     

     

    view plain
  • - (void)viewDidLoad  
  • {  
  •     [super viewDidLoad];  
  •     //滚动view   
  •     scrollView.delegate = self;  
  •     scrollView.scrollEnabled = YES;   
  •     scrollView.contentSize = CGSizeMake(100, 249);//设置滚动的可视区域  
  •     // Do any additional setup after loading the view from its nib.  
  • }  

  •     整个MyView.m代码如下:

     

     

    view plain
  • //  
  • //  MyView.m  
  • //  ScrollViewByHimi  
  • //  
  • //  Created by 华明 李 on 11-10-22.  
  • //  Copyright (c) 2011年 __MyCompanyName__. All rights reserved.  
  • //  
  •   
  • #import "MyView.h"  
  •   
  • @implementation MyView  
  • @synthesize scrollView;  
  • - (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil  
  • {  
  •     self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];  
  •     if (self) {  
  •         // Custom initialization  
  •     }  
  •     return self;  
  • }  
  •   
  • - (void)didReceiveMemoryWarning  
  • {  
  •     // Releases the view if it doesn't have a superview.  
  •     [super didReceiveMemoryWarning];  
  •       
  •     // Release any cached data, images, etc that aren't in use.  
  • }  
  •   
  • #pragma mark - View lifecycle  
  •   
  • - (void)viewDidLoad  
  • {  
  •     [super viewDidLoad];  
  •     //滚动view   
  •     scrollView.delegate = self;  
  •     scrollView.scrollEnabled = YES;   
  •     scrollView.contentSize = CGSizeMake(100, 249);//设置滚动的可视区域  
  •     // Do any additional setup after loading the view from its nib.  
  • }  
  •   
  • - (void)viewDidUnload  
  • {  
  •     [super viewDidUnload];  
  •     // Release any retained subviews of the main view.  
  •     // e.g. self.myOutlet = nil;  
  • }  
  •   
  • - (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation  
  • {  
  •     // Return YES for supported orientations  
  •     return (interfaceOrientation == UIInterfaceOrientationPortrait);  
  • }  
  •   
  • @end  

  •        OK,运行代码即可,运行效果如下:

     

                   

           可以拖动ScrollView中的数据了,ScrollView默认显示滚动条的,可以代码设置隐藏也可以xib中对ScrollView属性调整都可以;


                 下面介绍如何让ScrollView中的数据无限循环运动:

           首先在HelloWorldLayer.m种的init添加我们自定义view的下面设置一个选择器:

     

    view plain
  • [self schedule:@selector(viewAddPointY) interval:0.03];//每0.03秒执行一次viewAddPointY方法  
  •       然后viewAddPointY方法是Himi自定义的函数,代码如下:

     

     

    view plain
  • -(void)viewAddPointY{  
  •     view.scrollView.contentOffset=ccpAdd(view.scrollView.contentOffset, ccp(0,0.5));//让UIScrollView显示内容每次慢慢向上移动0.5像素  
  •     //view.scrollView.contentSize.height :得到UIScrollView的高度  
  •     if(view.scrollView.contentOffset.y>=view.scrollView.contentSize.height){  
  •         view.scrollView.contentOffset=ccp(0,-view.scrollView.frame.size.height);  
  •     }  
  • }  

  •     运行效果如下:

     


                      


          备注:我的Xcode是4.2用的模拟器是iOS5的模拟器,可能童鞋们按照我的这个教程运行后发现虽然UIScrollView中的数据滚动了但是没有循环播放,这个是因为模拟器的问题,Himi真机测试无问题的~

     

          好了,最后我把 HelloWorldLayer.h 和HelloWorldLayer.m也完整放上来,省得有的童鞋不知道添加代码的地方也方便童鞋们拷贝代码;


    HelloWorldLayer.h

     

    view plain
  • //  
  • //  HelloWorldLayer.h  
  • //  ScrollViewByHimi  
  • //  
  • //  Created by 华明 李 on 11-10-22.  
  • //  Copyright __MyCompanyName__ 2011年. All rights reserved.  
  • //  
  •   
  •   
  • // When you import this file, you import all the cocos2d classes  
  • #import "cocos2d.h"  
  • #import "MyView.h"  
  • // HelloWorldLayer  
  • @interface HelloWorldLayer : CCLayer  
  • {  
  •     MyView *view;  
  • }  
  •   
  • // returns a CCScene that contains the HelloWorldLayer as the only child  
  • +(CCScene *) scene;  
  •   
  • @end  


  •  

    HelloWorldLayer.m


     

    view plain
  • //  
  • //  HelloWorldLayer.m  
  • //  ScrollViewByHimi  
  • //  
  • //  Created by 华明 李 on 11-10-22.  
  • //  Copyright __MyCompanyName__ 2011年. All rights reserved.  
  • //  
  •   
  •   
  • // Import the interfaces  
  • #import "HelloWorldLayer.h"  
  • #import "MyView.h"  
  • // HelloWorldLayer implementation  
  • @implementation HelloWorldLayer  
  •   
  • +(CCScene *) scene  
  • {   
  •     CCScene *scene = [CCScene node];   
  •     HelloWorldLayer *layer = [HelloWorldLayer node];   
  •     [scene addChild: layer];   
  •     return scene;  
  • }  
  •    
  • -(id) init  
  • {   
  •     if( (self=[super init])) {  
  •           
  •         view= [[MyView alloc] initWithNibName:@"MyView" bundle:nil];    
  •         [[[CCDirector sharedDirector] openGLView] addSubview:view.view];    
  •         [self schedule:@selector(viewAddPointY) interval:0.03];//每0.03秒执行一次viewAddPointY方法  
  •     }  
  •     return self;  
  • }  
  • -(void)viewAddPointY{  
  •     view.scrollView.contentOffset=ccpAdd(view.scrollView.contentOffset, ccp(0,0.5));//让UIScrollView显示内容每次慢慢向上移动0.5像素  
  •     //view.scrollView.contentSize.height :得到UIScrollView的高度  
  •     if(view.scrollView.contentOffset.y>=view.scrollView.contentSize.height){  
  •         view.scrollView.contentOffset=ccp(0,-view.scrollView.frame.size.height);  
  •     }  
  • }  
  •    
  • - (void) dealloc  
  • {    
  •     [super dealloc];  
  • }  
  • @end  

  •     
    最新技术文章:
    ▪Android开发之登录验证实例教程
    ▪Android开发之注册登录方法示例
    ▪Android获取手机SIM卡运营商信息的方法
    ▪Android实现将已发送的短信写入短信数据库的...
    ▪Android发送短信功能代码
    ▪Android根据电话号码获得联系人头像实例代码
    ▪Android中GPS定位的用法实例
    ▪Android实现退出时关闭所有Activity的方法
    ▪Android实现文件的分割和组装
    ▪Android录音应用实例教程
    ▪Android双击返回键退出程序的实现方法
    ▪Android实现侦听电池状态显示、电量及充电动...
    ▪Android获取当前已连接的wifi信号强度的方法
    ▪Android实现动态显示或隐藏密码输入框的内容
    ▪根据USER-AGENT判断手机类型并跳转到相应的app...
    ▪Android Touch事件分发过程详解
    ▪Android中实现为TextView添加多个可点击的文本
    ▪Android程序设计之AIDL实例详解
    ▪Android显式启动与隐式启动Activity的区别介绍
    ▪Android按钮单击事件的四种常用写法总结
    ▪Android消息处理机制Looper和Handler详解
    ▪Android实现Back功能代码片段总结
    ▪Android实用的代码片段 常用代码总结
    ▪Android实现弹出键盘的方法
    ▪Android中通过view方式获取当前Activity的屏幕截...
    ▪Android提高之自定义Menu(TabMenu)实现方法
    ▪Android提高之多方向抽屉实现方法
    ▪Android提高之MediaPlayer播放网络音频的实现方法...
    ▪Android提高之MediaPlayer播放网络视频的实现方法...
    ▪Android提高之手游转电视游戏的模拟操控
     


    站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3