ios联系人上面那个星星怎么点亮星星的人

iOS 星星视图 3行搞定
来源:open开发经验库
最近项目需要使用评价的星星视图,自己写了一个玩玩,这个星星视图写的还是比较简单的,初学者可以看一下,大神的话,还请多多指教了~
首先,作为一个视图,初始化代码能少则少!
话不多说,先上初始化的代码:
WQLStarView *starView = [[WQLStarView alloc]initWithFrame:CGRectMake(0, 100, self.view.frame.size.width, 40) withTotalStar:5 withTotalPoint:10 starSpace:10];
mentPoint = 7;
[self.view addSubview:starView]; 
需要传入这么几个参数:星星视图的frame
展示的星星数
星星代表的总分数
星星之间的间隔
然后是效果:
(为了看得清,请原谅我加了个蓝色的边框。中间灰色的是一个输入框,测试用的,请忽略)
我设置的frame的宽度是屏宽,可是此时效果让我很不开心,作为强迫症患者,我要调整。
调整的代码:
starView = [[WQLStarView alloc]initWithFrame:CGRectMake(0, 100, self.view.frame.size.width, 40) withTotalStar:5 withTotalPoint:10 starSpace:10];
starView.starAliment = StarAlimentC
mentPoint = 7;
[self.view addSubview:starView]; 
这个starAliment是个什么属性?下文会提到。
再看看此时效果:
好了,接下来,看一下我们的核心文件了:
WQLStarView.h
1 typedef NS_ENUM(NSInteger,StarAliment) {
StarAlimentDefault,
StarAlimentCenter,
StarAlimentRight
8 @interface WQLStarView : UIView
9 /**
12 @property (nonatomic,assign) CGFloat commentP
13 /**
对齐方式
16 @property (nonatomic,assign) StarAliment starA
18 /**
初始化方法
@param frame
整个星星视图的frame
@param totalStar
总的星星的个数
@param totalPoint 星星表示的总分数
@param space
星星之间的间距
@return WQLStarView
28 - (instancetype)initWithFrame:(CGRect)frame withTotalStar:(NSInteger)totalStar withTotalPoint:(CGFloat)totalPoint starSpace:(NSInteger) 
关键是WQLStarView.m文件了:
初始化方法:
1 - (instancetype)initWithFrame:(CGRect)frame withTotalStar:(NSInteger)totalStar withTotalPoint:(CGFloat)totalPoint starSpace:(NSInteger)space
self = [super initWithFrame:frame];
if (self) {
//对传进来的frame进行处理,取合适的星星的高度
//传进来的高度
CGFloat height = frame.size.
//减去间距后的平均的宽度(我设置的星星 高度=宽度)
CGFloat averageHeight = (frame.size.width-space*(totalStar-1))/totalS
if (height&averageHeight) {
starHeight = averageH
}else{
starHeight =
starBaseTag = 6666;
spaceWidth =
totalNumber = totalS
singlePoint = totalPoint/totalS
maxPoints = totalP
[self loadCustomViewWithTotal:totalStar];
29 } 
加载视图:
1 - (void)loadCustomViewWithTotal:(NSInteger)totalStar
//先铺背景图片(空的星星)
for (int i =0 ; i&totalS i++) {
UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(i*starHeight+i*spaceWidth, self.frame.size.height-starHeight, starHeight, starHeight)];
imageView.tag = starBaseTag+i;
imageView.image = [UIImage imageNamed:@"starBackImage"];
[self addSubview:imageView];
11 } 
设置评分分数:
1 //当你设置评分时 开始填充整颗星星
2 - (void)setCommentPoint:(CGFloat)commentPoint
_commentPoint = commentP
if (commentPoint & maxPoints) {
commentPoint = maxP
CGFloat showNumber = commentPoint/singleP
//覆盖的长图
if (!starView) {
starView = [[UIView alloc]init];
starView.frame = CGRectZ
//整颗星星
NSInteger fullNumber = showNumber/1;
if (starOffset & 0) {
starView.frame = CGRectMake(starOffset, self.frame.size.height-starHeight, starHeight*showNumber+spaceWidth*fullNumber, starHeight);
}else{
starView.frame = CGRectMake(0, self.frame.size.height-starHeight, starHeight*showNumber+spaceWidth*fullNumber, starHeight);
starView.clipsToBounds = YES;
//在长图上填充完整的星星
for (int j = 0; j& fullN j++) {
UIImageView *starImageView = [[UIImageView alloc]init];
starImageView.image = [UIImage imageNamed:@"starImage"];
starImageView.frame = CGRectMake(j*starHeight+j*spaceWidth, 0, starHeight, starHeight);
[starView addSubview:starImageView];
CGFloat part = showNumber - fullN
//如果有残缺的星星 则添加
if (part & 0) {
UIImageView *partImage = [[UIImageView alloc]initWithFrame:CGRectMake(fullNumber*starHeight+fullNumber*spaceWidth, 0, starHeight, starHeight)];
partImage.image = [UIImage imageNamed:@"starImage"];
[starView addSubview:partImage];
[self addSubview:starView];
47 } 
设置对齐方式:
1 //设置星星的对齐方式
2 - (void)setStarAliment:(StarAliment)starAliment
_starAliment = starA
switch (starAliment) {
//居中对齐
case StarAlimentCenter:
CGFloat starRealWidth = totalNumber*starHeight+(totalNumber-1)*spaceW
CGFloat leftWidth = self.frame.size.width-starRealW
for (int i =0 ; i& totalN i++) {
UIImageView *starImageView = (UIImageView*)[self viewWithTag:i+starBaseTag];
starImageView.frame = CGRectMake(leftWidth/2+starImageView.frame.origin.x, starImageView.frame.origin.y, starImageView.frame.size.width, starImageView.frame.size.height);
starOffset = leftWidth/2;
starView.frame = CGRectMake(leftWidth/2+starView.frame.origin.x, starView.frame.origin.y, starView.frame.size.width, starView.frame.size.height);
//右对齐
case StarAlimentRight:
CGFloat starRealWidth = totalNumber*starHeight+(totalNumber-1)*spaceW
CGFloat leftWidth = self.frame.size.width-starRealW
for (int i =0 ; i& totalN i++) {
UIImageView *starImageView = (UIImageView*)[self viewWithTag:i+starBaseTag];
starImageView.frame = CGRectMake(leftWidth+starImageView.frame.origin.x, starImageView.frame.origin.y, starImageView.frame.size.width, starImageView.frame.size.height);
starOffset = leftW
starView.frame = CGRectMake(leftWidth+starView.frame.origin.x, starView.frame.origin.y, starView.frame.size.width, starView.frame.size.height);
//默认的左对齐
case StarAlimentDefault:
for (int i =0 ; i& totalN i++) {
UIImageView *starImageView = (UIImageView*)[self viewWithTag:i+starBaseTag];
starImageView.frame = CGRectMake(i*starHeight+i*spaceWidth, self.frame.size.height-starHeight, starHeight, starHeight);
CGFloat showNumber = mentPoint/singleP
//整颗星星
NSInteger fullNumber = showNumber/1;
starOffset = 0;
starView.frame = CGRectMake(0, self.frame.size.height-starHeight, starHeight*showNumber+spaceWidth*fullNumber, starHeight);
default:
65 } 
至此,已经完成了星星视图的实现了。
感兴趣的朋友们可以下载看一下:/Coolll/WQLStarView
此外,如有不足,请各位大神多多指出来~小的感激不尽~~
---恢复内容结束---
最近项目需要使用评价的星星视图,自己写了一个玩玩,这个星星视图写的还是比较简单的,初学者可以看一下,大神的话,还请多多指教了~
首先,作为一个视图,初始化代码能少则少!
话不多说,先上初始化的代码:
WQLStarView *starView = [[WQLStarView alloc]initWithFrame:CGRectMake(0, 100, self.view.frame.size.width, 40) withTotalStar:5 withTotalPoint:10 starSpace:10];
mentPoint = 7;
[self.view addSubview:starView]; 
需要传入这么几个参数:星星视图的frame
展示的星星数
星星代表的总分数
星星之间的间隔
然后是效果:
(为了看得清,请原谅我加了个蓝色的边框。中间灰色的是一个输入框,测试用的,请忽略)
我设置的frame的宽度是屏宽,可是此时效果让我很不开心,作为强迫症患者,我要调整。
调整的代码:
starView = [[WQLStarView alloc]initWithFrame:CGRectMake(0, 100, self.view.frame.size.width, 40) withTotalStar:5 withTotalPoint:10 starSpace:10];
starView.starAliment = StarAlimentC
mentPoint = 7;
[self.view addSubview:starView]; 
这个starAliment是个什么属性?下文会提到。
再看看此时效果:
好了,接下来,看一下我们的核心文件了:
WQLStarView.h
1 typedef NS_ENUM(NSInteger,StarAliment) {
StarAlimentDefault,
StarAlimentCenter,
StarAlimentRight
8 @interface WQLStarView : UIView
9 /**
12 @property (nonatomic,assign) CGFloat commentP
13 /**
对齐方式
16 @property (nonatomic,assign) StarAliment starA
18 /**
初始化方法
@param frame
整个星星视图的frame
@param totalStar
总的星星的个数
@param totalPoint 星星表示的总分数
@param space
星星之间的间距
@return WQLStarView
28 - (instancetype)initWithFrame:(CGRect)frame withTotalStar:(NSInteger)totalStar withTotalPoint:(CGFloat)totalPoint starSpace:(NSInteger) 
关键是WQLStarView.m文件了:
初始化方法:
1 - (instancetype)initWithFrame:(CGRect)frame withTotalStar:(NSInteger)totalStar withTotalPoint:(CGFloat)totalPoint starSpace:(NSInteger)space
self = [super initWithFrame:frame];
if (self) {
//对传进来的frame进行处理,取合适的星星的高度
//传进来的高度
CGFloat height = frame.size.
//减去间距后的平均的宽度(我设置的星星 高度=宽度)
CGFloat averageHeight = (frame.size.width-space*(totalStar-1))/totalS
if (height&averageHeight) {
starHeight = averageH
}else{
starHeight =
starBaseTag = 6666;
spaceWidth =
totalNumber = totalS
singlePoint = totalPoint/totalS
maxPoints = totalP
[self loadCustomViewWithTotal:totalStar];
29 } 
加载视图:
1 - (void)loadCustomViewWithTotal:(NSInteger)totalStar
//先铺背景图片(空的星星)
for (int i =0 ; i&totalS i++) {
UIImageView *imageView = [[UIImageView alloc]initWithFrame:CGRectMake(i*starHeight+i*spaceWidth, self.frame.size.height-starHeight, starHeight, starHeight)];
imageView.tag = starBaseTag+i;
imageView.image = [UIImage imageNamed:@"starBackImage"];
[self addSubview:imageView];
11 } 
设置评分分数:
1 //当你设置评分时 开始填充整颗星星
2 - (void)setCommentPoint:(CGFloat)commentPoint
_commentPoint = commentP
if (commentPoint & maxPoints) {
commentPoint = maxP
CGFloat showNumber = commentPoint/singleP
//覆盖的长图
if (!starView) {
starView = [[UIView alloc]init];
starView.frame = CGRectZ
//整颗星星
NSInteger fullNumber = showNumber/1;
if (starOffset & 0) {
starView.frame = CGRectMake(starOffset, self.frame.size.height-starHeight, starHeight*showNumber+spaceWidth*fullNumber, starHeight);
}else{
starView.frame = CGRectMake(0, self.frame.size.height-starHeight, starHeight*showNumber+spaceWidth*fullNumber, starHeight);
starView.clipsToBounds = YES;
//在长图上填充完整的星星
for (int j = 0; j& fullN j++) {
UIImageView *starImageView = [[UIImageView alloc]init];
starImageView.image = [UIImage imageNamed:@"starImage"];
starImageView.frame = CGRectMake(j*starHeight+j*spaceWidth, 0, starHeight, starHeight);
[starView addSubview:starImageView];
CGFloat part = showNumber - fullN
//如果有残缺的星星 则添加
if (part & 0) {
UIImageView *partImage = [[UIImageView alloc]initWithFrame:CGRectMake(fullNumber*starHeight+fullNumber*spaceWidth, 0, starHeight, starHeight)];
partImage.image = [UIImage imageNamed:@"starImage"];
[starView addSubview:partImage];
[self addSubview:starView];
47 } 
设置对齐方式:
1 //设置星星的对齐方式
2 - (void)setStarAliment:(StarAliment)starAliment
_starAliment = starA
switch (starAliment) {
//居中对齐
case StarAlimentCenter:
CGFloat starRealWidth = totalNumber*starHeight+(totalNumber-1)*spaceW
CGFloat leftWidth = self.frame.size.width-starRealW
for (int i =0 ; i& totalN i++) {
UIImageView *starImageView = (UIImageView*)[self viewWithTag:i+starBaseTag];
starImageView.frame = CGRectMake(leftWidth/2+starImageView.frame.origin.x, starImageView.frame.origin.y, starImageView.frame.size.width, starImageView.frame.size.height);
starOffset = leftWidth/2;
starView.frame = CGRectMake(leftWidth/2+starView.frame.origin.x, starView.frame.origin.y, starView.frame.size.width, starView.frame.size.height);
//右对齐
case StarAlimentRight:
CGFloat starRealWidth = totalNumber*starHeight+(totalNumber-1)*spaceW
CGFloat leftWidth = self.frame.size.width-starRealW
for (int i =0 ; i& totalN i++) {
UIImageView *starImageView = (UIImageView*)[self viewWithTag:i+starBaseTag];
starImageView.frame = CGRectMake(leftWidth+starImageView.frame.origin.x, starImageView.frame.origin.y, starImageView.frame.size.width, starImageView.frame.size.height);
starOffset = leftW
starView.frame = CGRectMake(leftWidth+starView.frame.origin.x, starView.frame.origin.y, starView.frame.size.width, starView.frame.size.height);
//默认的左对齐
case StarAlimentDefault:
for (int i =0 ; i& totalN i++) {
UIImageView *starImageView = (UIImageView*)[self viewWithTag:i+starBaseTag];
starImageView.frame = CGRectMake(i*starHeight+i*spaceWidth, self.frame.size.height-starHeight, starHeight, starHeight);
CGFloat showNumber = mentPoint/singleP
//整颗星星
NSInteger fullNumber = showNumber/1;
starOffset = 0;
starView.frame = CGRectMake(0, self.frame.size.height-starHeight, starHeight*showNumber+spaceWidth*fullNumber, starHeight);
default:
65 } 
至此,已经完成了星星视图的实现了。
感兴趣的朋友们可以下载看一下:/Coolll/WQLStarView
此外,如有不足,请各位大神多多指出来~小的感激不尽~~
来自: 
免责声明:本站部分内容、图片、文字、视频等来自于互联网,仅供大家学习与交流。相关内容如涉嫌侵犯您的知识产权或其他合法权益,请向本站发送有效通知,我们会及时处理。反馈邮箱&&&&。
学生服务号
在线咨询,奖学金返现,名师点评,等你来互动您当前的位置:&>&
  &放著吧,晚一点会有钟点佣人过来。&阿典走到客厅,抽起烟来。
  根据洛桓的资料,他们父母双亡后两兄弟相依为命没有分离过,当洛桓与林巧巧离婚,那个家已无人可以照顾贝贝。
  阿典看著贝贝,心里头浮现一丝不忍,他是该为这一切负起责任,他怎么能要求贝贝回到那个再也没有人的家。
  &现在暂时找不到巧巧,你先住在我这里吧。&阿典抽了几口烟。
  还在找厨房的贝贝听见阿典的话,于是回过头来。他看见阿典又有了哀伤的表情,就像夕阳落下的那天,他孤单的背影,沾染了落日的颜色。
  &好。&贝贝回答。
  在所有的情绪字眼里,哀伤是贝贝唯一了解得比较深入的词汇。因为爸爸和妈妈车祸死掉的时候、阿桓和巧巧吵架分离的时候,他问过阿桓,而阿桓也教他这个字的意思。
  哀伤,就是一种会让人感到难受的情绪,或许是你失去东西,或许是你失去所爱的人。那时你会想要哭,但是要忍耐,不可以让泪水掉下来。因为你不能向哀伤屈服,你必须要克服哀伤。然而哀伤的力量,却永远超过于你的忍耐。于是你只能忍耐著,痛苦地忍耐著。
  房里,突然传来行动电话的铃声,太过尖锐的声音刺激到贝贝的耳膜,贝贝松开了手里捧著的碗,碗摔在地上裂成了碎片,而摔碗的动作又发出了另一阵使他情绪不稳的刺耳声响。
  贝贝看著那些散落一地的碎片。
  &别捡了,让佣人处理就好。&
  &你确定她曾经在医院出现过?没认错人?好!我马上过去。&阿典打开衣柜随便挑了件衣服穿上,将手机塞进口袋里,便走了出来。当他发现贝贝没听他的话,自个儿拾著那些锋利的碎碗时,立刻冲向前去,抢过贝贝手中的瓷碗片。
  &叫你别捡你还捡,割到怎么办&&&阿典话还没讲完,手指指腹就感觉一阵刺痛,他低头一看,发现碎片竟在强夺途中划破了他的手,按著血忽然冒出了一堆,他吓了一大跳。
  &流、流、流、流血了&&&阿典大叫,他没料抢得太大力,竟害自己割得那么深,血不停地冒。
  &找块布来让我绑著!快点。&阿典喊着。
  但只见,贝贝走了过来,拉起自己身上的衬衫,将衣服的一角覆盖在阿典的伤口之上,然后紧紧握住。
  &布。&贝贝说。
  阿典愣了愣,看了看贝贝,一时间也不知道该说什么。衣服也是布没错,但用这么直接用衣服来裹伤口,未免好笑了点。&我快受不了你了,你真是有够呆耶!&阿典说著。
  稍后,阿典等血稍止,拿著绷带在手指上随便缠了缠,接著对贝贝说: &我同事看见巧巧了,我们现在先到医院去。&
  阿典见贝贝仍十分专注地看著他的伤口,他于是握住了贝贝的手臂。&现在赶时间,你别给我愣著。&
  贝贝回过神来便扭著想挣脱,他还没能那么快习惯阿典的碰触。一般来讲这样的肢体接触需要半个月,半个月后他才能有心理准备和阿典有些许的擦碰。
  &还挣扎!&阿典抓得更紧。
  &再挣扎小心我揍你。&他赶时间时一忙起来,便不想管别人的感受,管他是自闭症还是精神分裂,只要是人,K&K就会乖乖不乱动。
  贝贝皱起了眉头,不满正在胸口凝结着。
  &听话!&阿典看见贝贝的神情开始不对劲,实在很怕贝贝又像昨天在医院一样疯起来,乱叫乱跳,于是松开了一些力道,但还是没有放开他。
  &你乖乖听话,我带你去看阿桓;还带你去找巧巧。&阿典拿甜头诱导著贝贝。
  &还要买新表。&果不其然,当贝贝听到阿典的话,便称稍安静了下来。
  &好,再帮你买一支新表,买一支时间准时的表。&阿典随口说说。
  当他们到达医院的时候,时间已经过了两个小时。贝贝抗拒坐车是主因,因此他们只能以缓慢的速度,慢慢朝医院的方向走。
  阿典心想,这两天里走的路,大概是他这一年加起来所有份量。
  当他刚刚看见几个小鬼骑著脚踏车从他身边呼啸而过之时,他甚至心灰意冷地想著,得去买辆脚踏车代步了。但就不知道这个有汽车恐惧症的小鬼,愿不愿意接受脚踏车。
  到了医院后,贝贝望著玻璃窗里头,而后看了看阿典:&阿桓还在睡。&
  贝贝淡褐色眼眸里的疑惑,使得阿典的罪恶感一下子充塞了整个胸口,他张着嘴几乎说不出话来,直至几个呼吸过后,才能开口。
  &他&&他睡得很熟&&&阿典逼自己这么说。
  贝贝点了点头。他坐在走道与昨天相同的位置上,而后翻开书包拿起了同样的素描本,一笔一笔地记录他所看见的世界。
  他的素描精准而俐落,深深浅浅的灰色笔触间,将玻璃窗内的景象完整而逼真地拓印至纯白的素描本土。
  阿典的罪恶感使得他无法将视线投注在贝贝身上,他绕过了贝贝,来到同事面前。
  &林巧巧什么时候出现的?&
  &就在我打电话给你之前没多久。&同事说者:&趁著我们轮班的空档,林巧巧就待在加护病房之前,似乎还想进去。但被我们发现之后就逃走了,我们有试著追她,不过她跑得很快,一下子就不见了。&
  &跟老大报告过了?&
  &老大说所有证据都显示林巧巧跟这案子脱离不了关系,她似乎是中间商,而且还因为贩卖及食用麻药被通缉中。&
  &看来要让她出面是不可能了。&阿典沉吟了一下。&这样吧,如果还有消息,就再通知我。&
  &其实老大刚刚来过。&同事苦笑了下。&老大说得很明白,你放假了,警告我们不准再将案情进度告诉你。等到逮捕林巧巧,这件案子就要结案。剩下的一切,皆当作意外处理。老大在这件事上面帮你很多,所有的事情几乎被他压下来,你别再让他难做了。&
  同事摇了摇头,苦劝著。
  &我知道。&阿典也苦笑。
  &下去看过兴晃没?&同事又说。&杨桃说兴晃昨晚发高烧,烧到抽搐,吓得她一整晚都不敢阖眼。&
  &我这就去看他。&阿典也十分担心兴晃的伤。
  阿典看了眼正在作画的贝贝,心想他大概还有些时间才能画完,他于是下到六楼看看兴晃的伤势。
  兴晃的病房房门并没有关上,阿典由门缝中瞧见杨桃正坐在兴晃的床沿,她绑著的马尾一直没有松开过,发丝有些散开采,显得凌乱。
  兴晃疲态尽露的脸上挂著几丝笑意,他伸手抚著女友的脸庞。 她低下头,亲吻他乾涩的唇,犹如蜻蜒点水那般温柔。
  原本想踏进房门的阿典僵在门外无法动弹,两人亲昵的举动狠狠地打击了他。他困难地往后退一步、再一步,而后缓缓地退开采,远离了那扇门,与他们的两人世界。
  爱情原来就是这么回事,相爱的人皆会亲吻,皆会占据彼此不愿分开。然而当他仍在意著那个男人,这样的场景便会让他不堪。
  他在他们的爱情之间是多余的人,他始终说不出口的情意过于可耻。兴晃甚至不知道他在意著他长达六年,而他却为了这两个人,感到自己十分悲哀,进而可笑。
  阿典在楼梯口坐了下来。他握著一包烟,几次想点,却点不著。他的手有些颤抖,但他却把这归咎于此处是医院,医院里不该抽菸。
  他的身后来了个人,他转头,发现那是贝贝。&怎么,画完了?&
  贝贝点头。
  &坐吧!&阿典拍拍身旁的阶梯。
  贝贝挪开贴在臀后的书包,而后安静坐了下来。
  &其实,你到底明不明白自己的病是怎么回事?乙阿典想找些话题,好把自己的注意力从兴晃与杨桃身上开。
  &自闭症。&贝贝简单地说著:&是外星人。&
  &你曾经这么说过没错,但为什么这么说?&阿典的微笑十分苦涩。
  &你是地球人,我是外星人。&贝贝翻开书包,拿出了一本绘图本子,他将本子递给阿典。
  那是本&小王子&,也就是阿典看过却遗忘的书,书里画著被装在盒子里的羊。
  &你喜欢这本书?&阿典接过贝贝的书,翻了翻。但对于贝贝所给予的答案,阿典还是一点都搞不懂。他们两个人有时还真是鸡同鸭讲,弄不清楚究竟对方是什么状况。
  &星星儿都是外星人。&贝贝点头说。星星儿是一些人对自闭症患者的称呼。小王子也是外星人,他们是同类。
  阿典摸了摸贝贝的头,但发现贝贝还是闪躲。
  &不喜欢我碰你?&阿典问著。
  &讨厌。&贝贝老实地点头。
  &好吧,我不再勉强你。&反正短时间内也弄不懂贝贝这个外星人是怎么回事,阿典乾脆将书还给贝贝,不仔细看过。&走了,回家吧。&
  接著,他们又走了两个小时的路程,离开医院返回自己的家中。
  中午左右,有些困了的贝贝睡倒在沙发上,阿典拿了条毯子为贝贝盖上,便开车离家。
  他想到外头去乱七八糟一下,然后再随便找个烂人,来段烂得不能再烂的**。心里累积的哀伤,该适时倾倒。
  否则他会被这些排山倒海而来的寂寞,逼到发疯。
  凌晨三点,浓重的夜色深沉得化不开,夏夜里的风没有带来清爽,只有散不去的燠热重重裹覆,问得叫人无法呼吸。
  阿典打开了家里的门,烂醉如泥的他砰地倒在冰冶的地板上,睁眼一片漆黑,酒精的干扰下,他根本爬不起身打开家里的电灯。
  &该死的&&&阿典打著酒嗝,喃瞒咒骂著。
  &该死的&&&他身上全是之前那个陌生男人的古龙水味。
  那个在酒吧里穿得西装笔挺的男人说自己才下班,拿出律师名片塞进他口袋里,接著&&接著&&
  他身上全是那个男人的昂贵香水味。
  &贝贝!&阿典无力地喊著:&贝贝!开灯!开灯!&他受不了满室的黑暗。
  角落处,有个窝著不动的身影挪了挪。
  他定睛一看,发觉那正是贝贝。&干嘛缩在哪里?吓、吓人吗&阿典被吓了一跳。
  贝贝来到阿典面前,犹豫了好一会儿,才伸出双手,将阿典拖到沙发上。
  &灯,把灯点起来&&不&&是开起来&&&阿典醉糊涂了,连话也讲不清楚。
  贝贝只是站在阿典身旁,看著他。
  &开灯!开灯!全世界都黑了,电力公司停止供电了吗?&阿典吼著。
  &好臭!&贝贝捂著鼻子。他觉得阿典身上多了好多种味道,那让他闻不见阿典原本有的香味,于是他往后踏一步,与阿典保持距离。
  &灯&&灯&&&吼声渐渐停歇后,阿典开始**起来。
  贝贝就站著,在黑暗中凝视阿典。这个有著许多表情的男人,如今又换上了另一种面貌,贝贝努力理解著阿典脸上的表情符号所代表的意思,但他能力有限,所以无法确定真正合意。
  阿典所呈现出的,是孤单以外的东西。
  &灯!妈的!那个混帐把灯给关了!给我开灯&&&歇了一阵,阿块又开始吼起来。
  贝贝想了好一会儿,仍无法确定那是不是愤怒。 &贝贝!贝贝!给我过来!&阿典又开始胡乱喊著。
  贝贝温驯地走到阿典身旁,他觉得阿典曾经为他画羊,因此阿典值得信赖,所以在这几天相处之后,他发觉自己应该可以再靠阿典近一些。
  阿典的手在空中挥舞著,在贝贝靠近时,抓住了贝贝的手臂。
  &我告诉你。&阿典狠狠地将贝贝拉了下来,贝贝重心 不稳跌坐在她上,还撞著了沙发旁的矮桌子。
  贝贝皱著眉头,感觉膝盖外侧非常疼痛。
  &我告诉你,&阿典爬起身来,在黑暗中搜寻著贝贝,但最后他的眼睛却停留在沙发旁的矮桌子之上。
  阿典指著矮桌子,以为那是贝贝,于是阿典用著看起来万分凶狠,像是在审犯人时的凶恶神情,一字一句地说着:&我最讨厌回到家时电灯没打开,你既然在家,我没回来之前就要把所有的灯都弄亮,知不知道?&
  阿典醉得差不多了,根本不知道自已现在在干嘛。他只是将厌恶黑暗的情绪一股脑儿地倾吐出来。
  &不知道。&贝贝拧著眉回答。撞到膝盖真的很痛,他空着没被阿典抓住的那只手,一直摸著膝盖。
  &不知道&阿典吼著。&连三岁小学生都知道的事情,你跟我说不知道,你是白痴还是智障?&
  &不知道电灯。&贝贝努力地将自己的意思再做一次阐述。
  &对喔,你是自闭症&&&阿典突然想起来。&扶我起来。&
  但贝贝还是不动。
  &快点!&阿典又吼了声,大力地拍起矮桌子来。但不一会儿他就发觉不对劲,嘴里大喊大叫起来:&你穿了盔甲还是得了五十肩?肩膀的肌肉硬梆梆,槌也槌不动,简
  直就要比我家的桌子还硬!&阿典指著矮桌子,把它当成 了贝贝。
  贝贝觉得阿典真的很吵,想把耳朵捂起来,但他现在只剩一只手,所以无法做到。于是他伸出另外那只手,拉了拉阿典。
  这一天,肌肤与肌肤的碰触似乎已经没有那么令他反感,他在阿典身上再用力了些,努力地把阿典拉起来。
  阿典站起来后,整个人又往贝贝身上倒。
  &好臭!&贝贝叫了声。
  &电灯开关在那里。&阿典指著左边的墙。&把我挪过去。&
  贝贝吃力地将醉成一摊泥似的阿典抱著,忍耐著两人之间只隔著衣服的距离,将阿典撑到墙边。
  &这个、这个、这个、这个。&阿典指著墙上所有电灯开关。&在我回家之前,要把所有的都按开,怎么按知不知道?就像这样!&阿典示范著,啪帕啪地,点亮了所有日光灯。
  &这个、这个、这个。&贝贝点头,把阿典所教的东西记下。
  &每次!&阿典叫著。&每次只要我一回来,就全部点亮。&
  &点亮。&贝贝再度点头。
  &好,那现在去睡觉!很晚了,明天&&明天要上班&&&阿典整个人瘫回贝贝身上。
  突如其来的重量,让贝贝撑阿典撑得太过吃力,贝贝感觉十分的累,再也无法忍耐的他就这么松开自己抱著阿典的手,接著往后退了一大步。
  阿典整个人失去支撑,于是软倒在地,而阿典那颗可怜的大头也在重力加速度之下,猛力撞上瓷砖地板。
  &叩&&&地声,撞击力道之强,让夜里响起了回音。
  &痛死了,你到底在干嘛?&剧烈的疼痛袭来,阿典捂著头,在冰凉的地板上蜷曲著。他接著不停地咒骂,将自己所有知道的字汇都讲了出来。
  贝贝盖起了耳朵,声音太吵了,叫他无法承受。最后没有办法,贝贝躲进了房间里,把门关起来,直到阿典骂累、嘴巴酸了为止。
  再出来,已经是半个小时以后的事。 贝贝走到阿典身边,发觉阿典嘴巴仍动著,但已是喃喃自语。
  &好冷&&&冰凉的瓷砖地板带走阿典身上所有热度,他像个孩子般缩成一团。
  贝贝慢慢地移动双脚,抓著阿典的手臂,将倒在地上的他缓缓往卧室拖去,然后把阿典搬放上床。
  &好冷&&&阿典说著。
  贝贝想了想,接著模仿起巧巧以前带他上床时的动作,掀起被子的一角,盖在阿典身&晚安&&&阿典瑟缩了一下,喃喃说著:&今天就到此为止&&大家解散回家明天继续努力查案&&&
  贝贝蹲在床沿看了阿典好一会儿,发觉阿典的嘴巴不停动着,一直不断地说话。从进了门到现在,都没有停止过。
  盯了一会儿,他自己也有些困了,他于是钻上阿典的双人床,把头安放在自己带过来的枕头上,闭上眼,也说了声:&晚安。&
  然而就在他打算睡去之时,阿典突然翻了个身,将一只脚一只手横放在他身上,压住了他。
  他转头,发现阿典的脸离他好近,阿典还是喃喃发著许多奇怪的声音。
  &好重!&他又开始挣扎,想脱离阿典。阿典这样压著他,他没办法睡觉。
  慢慢地,因贝贝的动作过大,被吵醒的阿典又睁开了眼睛。
  &你怎么会在这里?&意识朦胧的阿典看见身旁睡了个人,觉得莫名其妙而问著。
  阿典继而将自己横亘在贝贝身上的手加重了力道,压制住贝贝。&你不是应该在医院吗?&阿典缓缓爬了起来。
  贝贝动弹不得,也不明白阿典说著什么。
  &为什么你会在我床上?你难道不知道我很喜欢你吗?&阿典朦胧的眼眸里有者深深的疑惑。
  贝贝试者挣扎,但阿典把整个身体的重量都压了上来。而且他今天因为要等有人回来陪他一起睡,所以硬撑到了三点,现在整个人都累没有力气反抗了。
  阿典呆了半晌,缓缓地,将唇凑往贝贝嘴上,撬开贝贝紧闭的牙齿,温柔而缓慢地吸吮他的舌头。
  贝贝僵著没有动。
  三分钟之后,阿典失去了意识,倒在贝贝身上睡着了。
  &好臭!&贝贝皱著眉。
  刚刚阿典把舌头伸进他嘴里时他一点也不敢移动,阿典身上的味道实在太令人难以忍受了,他只能僵著不动停止呼吸。
  之后,贝贝将阿典慢慢推往旁边,捏住了自己的鼻子。
  &兴晃&&我喜欢你&&&几秒钟后,阿典又黏了上来。
  贝贝皱起了眉头。
  阿典的手与脚自动搜寻著身旁的温度,再度缠在贝贝身上。 &臭臭臭臭臭!&贝贝觉得自已快断气了。
  &喜欢你&&&阿典喃喃说著。
  第四章
  &养是什么意思?&他问著。
  &豢养就是&&建立连带关系。&它回答:
  &当你豢养了我。我们将互相需要。对我而言你是独一无二的,对你来说,我也是独一无二的。我会认出一种脚步声不同于猎人,那是你的,或许听起来将会像是音乐。你金黄色的头发会使我联想到麦田,我同时也会爱上倾听麦田里的风声&&你想想,这是多么奇妙。&
  &该怎么才能豢养你?&他问著。 &你必须有耐性。&它回答。&每天靠近我一点点&&&
  &&节录自&小王子&
  &六点了&又是那个声音,平稳温和、持续不断地响著。声调没有太多抑扬顿挫,虽然呆板,但却让人感觉很舒服。
  阿典慢慢睁开了眼,瞧见贝贝就蹲在床沿。
  他看著贝贝,贝贝也同样看著他。但就算贝贝的声音多么好听,阿典仍是一张大便脸。
  阿典的眉头皱得不能再深,眼睛眯成一条张不开来的细线,他苍白的唇失去血色乾涩不已,宿醉令他的脑袋十分难过。
  &哈啾&&&阿典打了个喷嚏,口水不小心喷到贝贝脸上。
  &六点了!&贝贝跑去拿张面纸擦脸,回来后仍是一贯的鹦鹉学语重复著。&六点了!&
  &谁说六点了?&阿典捣著自己发痛的头,全身骨头像快散了似地,随便翻个身都叫他关节喀啦喀啦作响。浑身上下,没有一处是完好而舒服的。
  贝贝指著阿典床头柜上的闹钟。&六点了。&
  阿典极为困难地把手伸到床头柜上,动作缓慢将闹钟拿了下来,接著把时间往后拨,拨到一点。
  &现在才半夜一点,晚安,继续睡吧。&放回闹钟后阿典将棉被拉起来蒙住头,继续呼呼大睡。他今天宿醉,头正痛著,又好像有些感冒,浑身不对劲的他没空理会这个小子。
  之后,阿典一直睡到了中午才起身。
  当阿典揉著眼睛走到客厅,竟发觉客厅矮桌子上有著个开封吃到一半的便当,&这么厉害,还会跑去便利商店买便当。&正当阿典大为惊讶贝贝哪时变聪明他都不知道时,突然听见厨房传来呕吐声。
  那一声又一声,呕得叫阿典也快跟著反胃起来。
  阿典感觉不大对劲,连忙拿起便当一闻,发现里面的饭菜早就酸臭掉了,接着他又看了看制造日期。
  &妈啊&&&阿典吓了一跳,这不是他三天前买给贝贝当晚餐的吗? &我的天&&&阿典冲往厨房,发现贝贝正挂在洗碗槽上不停地吐著。
  贝贝吐得浑身都是,衣服都脏了,也弄得整个厨房溢满酸味。
  &你没事吧,怎么便当坏了也吃,那会吃出人命来的!&阿典连忙撑住双手松开洗碗槽,整个人往下滑的贝贝。当他闻到贝贝身上的异味,自己也都快作呕了。
  阿典挟著贝贝,把贝贝带往浴室。
  他将贝贝丢进大浴缸里,打开热水,让蓬蓬头洒出来的水清洗贝贝身上的污秽,接著他又跑出门外打电话给清洁公司,麻烦对方先派个钟点佣人过来帮他处理厨房,随后又赶快回到浴室之内。
  贝贝由浴缸里爬起来,水太烫了,他十分难受。
  &我拜托你先冲乾净再出去。&阿典将浴室门锁了起来。拜托,他这栋房子是百万装修耶,这家伙吐来吐去,弄脏了他可会,心疼的。
  阿典将贝贝推回浴缸内,把莲蓬头交给他。&自己洗,洗乾净了再出去。&阿典随后关上浴缸外的毛玻璃门,站在乾湿分离的换衣间外等著贝贝。
  但没三秒钟,贝贝就把水龙头的水给关了。
  &搞什么鬼?&阿典**了一声,打开玻璃门。
  他看著贝贝,贝贝也看著他,他气得不得了,又开始吼了起来:&你该不会是连洗澡也不会吧!&
  贝贝还是看著他,没有太多情绪的睑上只有大男孩的纯真。
  阿典捂著额,实在快受不了了。&妈的,没听说收容人,还得帮人洗澡的。&他更想起由贝贝进到他家开始算起,贝贝已经三天没洗过澡了。
  阿典打开蓬蓬头,继续让热水往贝贝身上冲,但贝贝活像条被烫到的虾子,由双人大浴缸内跳了起来,不停往后头的瓷砖墙上靠。
  &干嘛?&阿典一脸大便地问著。
  &不要热水!&贝贝叫出声来。
  &那你洗冷水好了。&阿典将水调到室温下的冷水温度。
  但当冰冷的水冲到贝贝身上,贝贝一下子调适不过来,用扑的扑往阿典身上,阿典不慎被扑倒,两个人就这么跌滑在地。
  &妈的&&&阿典吼了声。&你到底想干嘛?&
  贝贝奋力爬起身来,情急间踩著阿典的身体就走,他打开浴室的门冲了出去,留下倒地不起的阿典,与一支不停洒著冷水的莲蓬头。
  &给我回来!&阿典快疯了,躺在浴室瓷砖地板上的他全身湿透,而且被贝贝踩了一脚的肚子和肩膀痛得教他受不了。
  他火大了,爬起身来,往外头冲去,在卧室的床上找到贝贝后,扣住贝贝的手臂将他擒住,然后死拖活拖拖回浴室,接著把贝贝压倒在浴缸里,扒起贝贝的衣服。
  不过这回阿典学乖,他转开的水龙头放起温水,不白痴到用过于极端的水温,去刺激贝贝。
  虽然贝贝仍然挣扎,但阿典整个人压在贝贝身上,打算跟贝贝拼了。
  &你臭得要死。&阿典把沐浴乳整罐倒人水中,一点也不斯文地搓起贝贝衣服下的皮肤来。
  放满温水的大浴缸刚好容得下两个人,两人的激烈挣扎让水中的淋浴乳开始溶解,水面上起了一堆白色泡沫,贝贝的衣服、长裤和内裤&&被阿典拉出水面,丢到浴室地上。
  两个人上演著全武行,贝贝叫著,阿典吼著,浴室里回音极大,吵得不得了。
  &你比我臭。&贝贝一拳挥过去,刚好打中阿典的下巴。
  &你敢袭警!&阿典眼睛里的怒焰都快喷出来了,他水面下的膝盖往前顶住贝贝两腿之间,伸手抓住贝贝的下颚。&我看你接下来怎么死!&
  阿典以身体压制住贝贝,接著两手往下滑伸到贝贝的胳肢窝下,开始奋力搔贝贝的痒。
  贝贝受不了,尖叫了起来,他拱起身体贴紧阿典的胸膛,整个人在阿典身下滑来滑去,元法承受被哈痒的他没办法使力,还咕噜咕噜地喝了浴缸里波动起伏的肥皂水好几口。
  &不要、不要!&贝贝喊著。
  &敢打我,你不知道我是警局里,人称拷问犯人第一名的红牌警察吗?&阿典的手在贝贝身上摸来摸去滑来滑去,专挑贝贝的致命痒点,下手狠辣快,折磨得贝贝要死不活。
  过度的挣扎,让肥皂水溅上了贝贝的眼睛,贝贝赶紧闭起了双眼,但刺目的疼仍是袭来。&好痛!&贝贝整个脸皱成一团。
  阿典这才停下搔痒的动作。&活该!&他说着。
  贝贝举起手揉著眼,想把难以忍受的疼痛揉走,但双眼却反而越来越难受。
  &把手拿开。&阿典拍开贝贝的手,打开莲蓬头,关小了水源,一手缓缓扳开贝贝的眼睑。&别动,我帮你冲一冲。你千万别动啊,瞎了我绝对不负责!&
  骚动过后,浴室里缓缓静了下来,阿典的言语也不似方才的激烈,他平稳了的声音像在哄小孩似地,放轻放柔了音量。
  贝贝因为刚刚的强烈反抗而有些累了,他的头伸在浴缸的边缘,乖乖地让阿典帮他清洗眼睛里头残留的肥皂水。
  浴缸中,水温温暖暖的,白色的泡沫满浚,包裹著两人。
  阿典太过轻柔了,他的手掌捧著贝贝的脸,过于珍惜的态度让气氛显得些许暖昧。
  阿典的膝盖仍顶在贝贝双腿之间,两人并没有意识到什么不对,直到阿典冲好了贝贝一个眼睛,又挪蓬蓬头到另一眼时,他身体的移动使得粗糙的牛仔裤细微而不间断地摩擦贝贝。加上之前哈痒的刺激,肌肤与肌肤的亲昵碰触,让贝贝的分身起了变化。
&&&&&&3&&&&&&&&
小技巧:可以使用键盘←
→键进行翻页、回车键返回网站首页
无相关信息

我要回帖

更多关于 点亮星星的人txt 的文章

 

随机推荐