1 / 26

iPhone 系统 应用与开发

iPhone 系统 应用与开发. -- 制作 iPhone 游戏菜单. 李云玮. 回顾. --Iphone 的控件有哪些? --Iphone 控件的层次结构? -- 如何对控件作出响应?. 教学分析. 上节课我们添加了 Library 库中提供的常用控件并能够作出响应,同时掌握真机调试的过程,这节课我们要正式创建游戏项目,并设计游戏中的菜单页类。 学生分小组讨论并回答. 新任务介绍. 学习 UIView 学习 Objective-C 语言及内存机制 建立类文件. 任务目标. 知识准备. 如何使用 UIView ? 什么是内存机制?

vina
Download Presentation

iPhone 系统 应用与开发

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. iPhone系统 应用与开发 -- 制作iPhone游戏菜单 李云玮

  2. 回顾 --Iphone的控件有哪些? --Iphone控件的层次结构? --如何对控件作出响应?

  3. 教学分析 上节课我们添加了Library库中提供的常用控件并能够作出响应,同时掌握真机调试的过程,这节课我们要正式创建游戏项目,并设计游戏中的菜单页类。 学生分小组讨论并回答

  4. 新任务介绍 学习UIView 学习Objective-C语言及内存机制 建立类文件

  5. 任务目标

  6. 知识准备 如何使用UIView? 什么是内存机制? 以小组形式收集信息学习讨论

  7. 任务实施 -- 制作iPhone游戏菜单

  8. 建立类文件

  9. 在项目BallHole中,首先建立新的类文件,在Classes上点击右键,选择Add New File…增加新文件。

  10. 选择将要增加的新文件为Cocoa Touch Class,选择新建的类文件为Objective-C的类文件。并在下放的Subclass of…选项中选择这个类继承自NSObject.

  11. 最后需要为新建立的类命名。建议命名方式为大写英文字母做头字母。目前我们将新建立的类命名为MenuViewController。即菜单页的控制器。最后需要为新建立的类命名。建议命名方式为大写英文字母做头字母。目前我们将新建立的类命名为MenuViewController。即菜单页的控制器。

  12. 我们已经建立好了新的类MenuViewController。 下面我们建立分组,来整理代码。 在Classes上点击右键,选择Add New Group建立新的分组。

  13. 左键单击分组图标,可以为其命名。

  14. 到此为止我们已经建立了MenuViewController类,并将其放到了对应的分组。到此为止我们已经建立了MenuViewController类,并将其放到了对应的分组。

  15. MenuViewController类作用 程序的主菜单界面。里面实例化了各种主界面控件,包括: 实例化背景图片,并加载到本类的view上。 UIImageView *myImageView=[[UIImageView alloc] initWithFrame:self.view.frame]; [myImageView setImage:getPNGImage(@"MenuBack")]; [self.view addSubview:myImageView]; 实例化开始游戏的按钮,并加载到本类的view上。 btnStartGame=[[UIButton alloc] initWithFrame:CGRectMake(0,0,200,50)]; [self.view addSubview:btnStartGame]; [btnStartGame release];

  16. 添加初始化函数 在MenuViewController实现文件的@implementation 和 @end之间,实现初始化函数。 - (id) init { //首先完成super类,即UIViewController类的初始化工作 self = [super init]; //如果完成了父类的初始化工作,即初始化后的对象不再为空 if (self != nil) { //则进行个性化的初始化工作。 } //返回已经被初始化后的对象 return self; }

  17. 对象初始化

  18. 第一步为对象分配内存,操作系统会根据创建的类的信息来决定为对象分配多少内存,分配格式如下:第一步为对象分配内存,操作系统会根据创建的类的信息来决定为对象分配多少内存,分配格式如下: Id 对象名=[类名 alloc]; 第二步在成功分配内存后,还要对内存进行初始化,指对实例变量的初始化,同时返回初始化后的对象,格式如下: [对象名字 init];

  19. 一般嵌套使用:类对象名=[[类名 alloc] init]; 初始化的具体代码,重载父类的init: -init{ if(self=[super init])//由于某种原因初始化失败而返回nil {//初始化该类的实例变量} return self; }

  20. MenuViewController类的对象初始化 在BallHoleAppDelegate.h中实例化MenuViewController类: #import<UIKit/UIKit.h> #import”MenuViewController.h” @interface BallHoleAppDelegate:NSObject<UIApplicationDelegate>{ UIWindow *window; MenuViewController *myMenuViewController; 在BallHoleAppDelegate.m中完成对象初始化: //程序启动后的回调函数,由于我们使用了UIApplicationDelegate代理,程序启动后会调用下面的函数,我们将对象初始化的代码放在此函数中,那么在程序启动后我们就可以初始化菜单视图。 -(void)applicationDidFinishLaunching:(UIApplicaiont *)application{ //将window对象设为程序的主窗口 [window makeKeyAndVisible]; //初始化myMenuViewController对象,作为程序的菜单界面 myMenuViewController=[[MenuViewController alloc] init]; }

  21. 实例化导航器控制器 在BallHoleAppDelegate.h中实例化导航器控制器: @interface BallHoleAppDelegate:NSObject<UIApplicationDelegate>{ UIWindow *window; UINavigationController *myNC; MenuViewController *myMenuViewController; } 在BallHoleAppDelegate.m中将菜单页添加至导航器控制器,并且将导航器控制器添加至窗口中 -(void)applicationDidFinishLaunching:(UIApplicaiont *)application{ //将window对象设为程序的主窗口 [window makeKeyAndVisible]; //实例化myMenuViewController对象,作为程序的菜单界面 myMenuViewController=[[MenuViewController alloc] init]; /初始化导航器对象,并且将菜单页作为导航器控制器的根页 myNC=[[UINavigationController alloc] initWithRootViewController:myMenuViewController]; //隐藏导航条 [myNC setNavigationBarHidden:YES]; //将导航器加载到窗口上 [window addSubview:myNC.view]; }

  22. 回收对象 当对象不再被使用时就必须回收,释放对象时会调用dealloc方法来释放对象,回收分配的内存。 -(void)dealloc{  [window release]; [myNC.view removeFromeSuperview] [myMenuViewController release]; [myNC release]; };

  23. ScoresViewController类 • 显示分数的界面,通过UILabel来显示分数 • 实例化对象并初始化 • 添加初始化函数 • 实例化对象 • 初始化对象

  24. GameViewController类 • 游戏运行的界面 • 实例化对象并初始化 • 添加初始化函数 • 实例化对象 • 初始化对象

  25. 拓展任务 利用学过的控件编写一个简单的程序。

More Related