标签:
创建僵尸类zomb,继承UIIV
把VC的即使时间timer放到僵尸类的初始化方法中
- (instancetype)initWithFrame:(CGRect)frame
{
self = [super initWithFrame:frame];
if (self) {
[NSTimer scheduledTimerWithTimeInterval:.1 target:self selector:@selector(changeImage) userInfo:nil repeats:YES];
}
return self;
}
此时换图片的代码也搬到僵尸类中
-(void)changeImage{
// 截取图片
//
UIImage *zombImage = [UIImage imageNamed:@"zomb_2"];
float w = self.zombImage.size.width/8;
CGImageRef subImage = CGImageCreateWithImageInRect(self.zombImage.CGImage, CGRectMake(self.count++%8*w, 0, w, self.zombImage.size.height));
self.image = [UIImage imageWithCGImage:subImage];
self.center = CGPointMake(self.center.x-self.speed, self.center.y);
}
但此时爆红,原因是没有吧zombIV去掉,以上是去掉zombIV的效果,因为这是他自身所以就不用署名,并且添加self。
此时还需要属性count。所以在。h中声明属性
@property (nonatomic)int count;
回到VC中可以删除创建僵尸的代码
并且import zomb。
在vc中写入
————————————
要创建多重僵尸的话,要继承与僵尸zomb
创建zombA。 并且在父类zomb初始化中删除创建的僵尸图片
UIImage *zombImage = [UIImage imageNamed:@"zomb_2"];————————删除!!!!!!!
(因为父类的作用是仅仅吧相同的东西提取出来)
——进入zomb。h中创建@property (n,,strong)UIIMage *zombImage;
——进入zombA。m中初始化给图片属性赋值
Self*zombImage = [UIImage imageNamed:@"zomb_0”];
——此时,只有给子类赋值才有有值,所以在VC中import ZombA 。h
在VDL中
此时可以创建B、C僵尸————————————————依然继承Zomb
唯一是图片不同,所以在初始化中更改图片
并且在VC中声明B和C类 并在VDL中复制两个Z2和Z3
此时可以设置ZombA *。。。中把A删掉,都改成Zomb *。。。
继承父类
此时僵尸要有速度,所以要在父类zomb中changeImage中的移动速度中的内容变成属性,变量,所以
self.center = CGPointMake(self.center.x-self.speed, self.center.y);
所以要在。h中声明@property (nonatomic)float speed;
此时要在不同子类初始化中赋值speed 分别的速度 self。speed = 。。。
————————————此时僵尸如何添加就搞定——————————————
在VDL中设置添加僵尸事件timer
[NSTimer scheduledTimerWithTimeInterval:.1 target:self selector:@selector(addZomb) userInfo:nil repeats:YES];
此时要让界面随机添加随机僵尸
首先先把屏幕横过来,(吧sb横过来,添加背景图片)
所以在方法中
-(void)addZomb{
int random = arc4random()%4; ————僵尸数量
Zomb *z = nil;
int line = arc4random()%5 + 1;
switch (random) {
case 0:
z = [[ZombA alloc]initWithFrame:CGRectMake(self.view.bounds.size.width或者320, line*50(一行的高度), 30, 50)];
break;
case 1:
z = [[ZombB alloc]initWithFrame:CGRectMake(self.view.bounds.size.width,line*50, 30, 50)];
break;
case 2:
z = [[ZombC alloc]initWithFrame:CGRectMake(self.view.bounds.size.width, line*50, 30, 50)];
break;
case 3:
z = [[ZombD alloc]initWithFrame:CGRectMake(self.view.bounds.size.width, line*50, 30, 50)];
break;
}
[self.view addSubview:z];
}
但此时界面中会卡死
所以要在zomb.m中添加
CGImageRelease(subImage);
————————————————此时添加僵尸成功——————————————
此时可以在界面sb中拖入上方的工具选择栏
以及Label计数
并添加UIIV
创建好UIIV关联:关联时关联其中一个 选择并且关联剩余三个成为数组
此时关联图片,但是素材图片是一条所有图,所以要裁减,并且取消100元的射手(因为素材有误)
———在VDL中初始化界面:建立方法initUI{},在里面截取图片,
首先取出图片,并且遍历(因为用到位置所以不能用forin)
-(void)initUI{
UIImage *plantsImage= [UIImage imageNamed:@"seedpackets"];
float w = plantsImage.size.width/18;
for (int i=0; i<self.plantIVs.count; i++) {
UIImageView *plantIV = self.plantIVs[i];
float x = 0;
switch (i) {
// case 0:
// x = 0;
// break;
case 1:
x = 2*w;
break;
case 2:
x = 3*w; N*W是取决于图片的位置
break;
case 3:
x = 5*w;
break;
}
CGImageRef(截取命令) subImage = CGImageCreateWithImageInRect(plantsImage.CGImage, CGRectMake(x, 0, w, plantsImage.size.height));
plantIV.image = [UIImage imageWithCGImage:subImage];
}
}
——————————————————此时可以创建植物类——————————
建立继承与UIIV的父类, plant
此时复制僵尸父类中的内容 改下名称 并且把speed删除
在。h中
@property (nonatomic, strong)UIImage *plantImage;
@property (nonatomic)int count;
并且改下。m中的名字plantimage
——————————然后创建向日葵,————————
创建向日葵类继承于plant的SunFlower
首先在初始化方法中更改图片内容
在VC中添加拖拽方法
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
}
-(void)touchesEnded:(NSSet *)touches withEvent:(UIEvent *)event{
——————————————————————————————————
其中在
-(void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{
UITouch *t = [touches anyObject];
————判断点击的位置是否点击到相应图片
CGPoint p = [t locationInView:self.view];
——用户点击的位置 = 图片的位置
for (UIImageView *plantIV in self.plantIVs) {
if (CGRectContainsPoint(plantIV.frame, p)) {—————— 判断点击的点有没有在植物当中
((( 此时给在sb中添加的四个IV添加标识 并添加tag
因为向日葵要拖拽移动而且不仅是向日葵需要拖动 所以就要导入植物父类并设置成属性:
@property (nonatomic, strong)Plant *dragPlant;)))
——————然后回到判断中
import sunFlower
switch (plantIV.tag) {
case 0:——向日葵
self.dragPlant = [[SunFlower alloc]initWithFrame:plantIV.frame];——设置大小与植物一样
break;
case 1:
self.dragPlant = [[SunFlower alloc]initWithFrame:plantIV.frame];
break;
case 2:
self.dragPlant = [[SunFlower alloc]initWithFrame:plantIV.frame];
break;
case 3:
self.dragPlant = [[SunFlower alloc]initWithFrame:plantIV.frame];
break;
}
[self.view addSubview:self.dragPlant];
}
}
}
————————————————————这只是向日葵的东西,——————————
但基本都一样生育三个
——————————————
此时要点击移动 所以进入
-(void)touchesMoved:(NSSet *)touches withEvent:(UIEvent *)event{
UITouch *t = [touches anyObject];
self.dragPlant.center = [t locationInView:self.view];
}
标签:
原文地址:http://www.cnblogs.com/lovemyios/p/4841854.html