大转盘游戏开发物语最强11人有没有人会的?

Android之仿腾讯游戏转盘抽奖_Android开发-织梦者
当前位置:&>&&>& > Android之仿腾讯游戏转盘抽奖
Android之仿腾讯游戏转盘抽奖
-----------------转载请注明出处:http://blog.csdn.net/android_cll
一:先来张效果图(这里应该是GIF动画,我就截屏的所有没有动画,实际是动的):
import android.content.C
import android.graphics.B
import android.graphics.BitmapF
import android.graphics.C
import android.graphics.P
import android.graphics.P
import android.graphics.R
import android.graphics.RectF;
import android.util.AttributeS
import android.util.L
import android.util.TypedV
import android.view.SurfaceH
import android.view.SurfaceHolder.C
import android.view.SurfaceV
public class BitWheelView extends SurfaceView implements Callback, Runnable {
private SurfaceHolder mH
* 与SurfaceHolder绑定的Canvas
private Canvas mC
* 用于绘制的线程
* 线程的控制开关
private boolean isR
* 抽奖的文字
private String[] mStrs = new String[]{&单反相机&, &IPAD&, &恭喜发财&, &IPHONE&,
&妹子一只&, &恭喜发财&};
* 每个盘块的颜色
private int[] mColors = new int[]{0xFFFFC300, 0xFFF17E01, 0xFFFFC300,
0xFFF17E01, 0xFFFFC300, 0xFFF17E01};
* 与文字对应的图片
private int[] mImgs = new int[]{R.mipmap.danfan, R.mipmap.,
R.mipmap.f040, R.mipmap.iphone, R.mipmap.meizi,
R.mipmap.f040};
* 与文字对应图片的bitmap数组
private Bitmap[] mImgsB
* 盘块的个数
private int mItemCount = 6;
* 绘制盘块的范围
private RectF mRange = new RectF();
* 圆的直径
private int mR
* 绘制盘快的画笔
private Paint mArcP
* 绘制文字的画笔
private Paint mTextP
* 滚动的速度
private double mS
private volatile float mStartAngle = 0;
* 是否点击了停止
private boolean isShouldE
* 控件的中心位置
private int mC
* 控件的padding,这里我们认为4个padding的值一致,以paddingleft为标准
private int mP
* 背景图的bitmap
private Bitmap mBgBitmap = BitmapFactory.decodeResource(getResources(),
R.mipmap.bg2);
* 文字的大小
private float mTextSize = TypedValue.applyDimension(
TypedValue.COMPLEX_UNIT_SP, 20, getResources().getDisplayMetrics());
public BitWheelView(Context context) {
this(context, null);
public BitWheelView(Context context, AttributeSet attrs) {
super(context, attrs);
mHolder = getHolder();
mHolder.addCallback(this);
// setZOrderOnTop(true);// 设置画布 背景透明
// mHolder.setFormat(PixelFormat.TRANSLUCENT);
setFocusable(true);
setFocusableInTouchMode(true);
this.setKeepScreenOn(true);
* 设置控件为正方形
protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
super.onMeasure(widthMeasureSpec, heightMeasureSpec);
int width = Math.min(getMeasuredWidth(), getMeasuredHeight());
// 获取圆形的直径
mRadius = width - getPaddingLeft() - getPaddingRight();
// padding值
mPadding = getPaddingLeft();
mCenter = width / 2;
setMeasuredDimension(width, width);
public void surfaceCreated(SurfaceHolder holder) {
// 初始化绘制圆弧的画笔
mArcPaint = new Paint();
mArcPaint.setAntiAlias(true);
mArcPaint.setDither(true);
// 初始化绘制文字的画笔
mTextPaint = new Paint();
mTextPaint.setColor(0xFFffffff);
mTextPaint.setTextSize(mTextSize);
// 圆弧的绘制范围
mRange = new RectF(getPaddingLeft(), getPaddingLeft(), mRadius
+ getPaddingLeft(), mRadius + getPaddingLeft());
// 初始化图片
mImgsBitmap = new Bitmap[mItemCount];
for (int i = 0; i & mItemC i++) {
mImgsBitmap[i] = BitmapFactory.decodeResource(getResources(),
mImgs[i]);
// 开启线程
isRunning =
t = new Thread(this);
t.start();
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
public void surfaceDestroyed(SurfaceHolder holder) {
// 通知关闭线程
isRunning =
public void run() {
// 不断的进行draw
while (isRunning) {
long start = System.currentTimeMillis();
long end = System.currentTimeMillis();
if (end - start & 50) {
Thread.sleep(50 - (end - start));
} catch (InterruptedException e) {
e.printStackTrace();
private void draw() {
// 获得canvas
mCanvas = mHolder.lockCanvas();
if (mCanvas != null) {
// 绘制背景图
* 绘制每个块块,每个块块上的文本,每个块块上的图片
float tmpAngle = mStartA
float sweepAngle = (float) (360 / mItemCount);
for (int i = 0; i & mItemC i++) {
// 绘制快快
mArcPaint.setColor(mColors[i]);
mArcPaint.setStyle(Style.STROKE);
mCanvas.drawArc(mRange, tmpAngle, sweepAngle, true,
mArcPaint);
// 绘制文本
drawText(tmpAngle, sweepAngle, mStrs[i]);
// 绘制Icon
drawIcon(tmpAngle, i);
tmpAngle += sweepA
// 如果mSpeed不等于0,则相当于在滚动
mStartAngle += mS
// 点击停止时,设置mSpeed为递减,为0值转盘停止
if (isShouldEnd) {
mSpeed -= 1;
if (mSpeed &= 0) {
mSpeed = 0;
isShouldEnd =
// 根据当前旋转的mStartAngle计算当前滚动到的区域
calInExactArea(mStartAngle);
} catch (Exception e) {
e.printStackTrace();
} finally {
if (mCanvas != null)
mHolder.unlockCanvasAndPost(mCanvas);
* 根据当前旋转的mStartAngle计算当前滚动到的区域 绘制背景,不重要,完全为了美观
private void drawBg() {
mCanvas.drawColor(0xFFFFFFFF);
mCanvas.drawBitmap(mBgBitmap, null, new Rect(mPadding / 2,
mPadding / 2, getMeasuredWidth() - mPadding / 2,
getMeasuredWidth() - mPadding / 2), null);
* 根据当前旋转的mStartAngle计算当前滚动到的区域
* @param startAngle
public void calInExactArea(float startAngle) {
// 让指针从水平向右开始计算
float rotate = startAngle + 90;
rotate %= 360.0;
for (int i = 0; i & mItemC i++) {
// 每个的中奖范围
float from = 360 - (i + 1) * (360 / mItemCount);
float to = from + 360 - (i) * (360 / mItemCount);
if ((rotate & from) && (rotate & to)) {
Log.d(&TAG&, mStrs[i]);
* 绘制图片
* @param startAngle
* @param i
private void drawIcon(float startAngle, int i) {
// 设置图片的宽度为直径的1/8
int imgWidth = mRadius / 8;
float angle = (float) ((30 + startAngle) * (Math.PI / 180));
int x = (int) (mCenter + mRadius / 2 / 2 * Math.cos(angle));
int y = (int) (mCenter + mRadius / 2 / 2 * Math.sin(angle));
// 确定绘制图片的位置
Rect rect = new Rect(x - imgWidth / 2, y - imgWidth / 2, x + imgWidth
/ 2, y + imgWidth / 2);
mCanvas.drawBitmap(mImgsBitmap[i], null, rect, null);
* 绘制文本
* @param startAngle
* @param sweepAngle
* @param string
private void drawText(float startAngle, float sweepAngle, String string) {
Path path = new Path();
path.addArc(mRange, startAngle, sweepAngle);
float textWidth = mTextPaint.measureText(string);
// 利用水平偏移让文字居中
float hOffset = (float) (mRadius * Math.PI / mItemCount / 2 - textWidth / 2);// 水平偏移
float vOffset = mRadius / 2 / 6;// 垂直偏移
mCanvas.drawTextOnPath(string, path, hOffset, vOffset, mTextPaint);
* 点击开始旋转
* @param luckyIndex
public void luckyStart(int luckyIndex) {
// 每项角度大小
float angle = (float) (360 / mItemCount);
// 中奖角度范围(因为指针向上,所以水平第一项旋转到指针指向,需要旋转210-270;)
float from = 270 - (luckyIndex + 1) *
float to = from +
// 停下来时旋转的距离
float targetFrom = 4 * 360 +
(v1 + 0) * (v1+1) / 2 =
v1*v1 + v1 - 2target = 0 ;
v1=-1+(1*1 + 8 *1 * target)/2;
float v1 = (float) (Math.sqrt(1 * 1 + 8 * 1 * targetFrom) - 1) / 2;
float targetTo = 4 * 360 +
float v2 = (float) (Math.sqrt(1 * 1 + 8 * 1 * targetTo) - 1) / 2;
mSpeed = (float) (v1 + Math.random() * (v2 - v1));
isShouldEnd =
public void luckyEnd() {
mStartAngle = 0;
isShouldEnd =
public boolean isStart() {
return mSpeed != 0;
public boolean isShouldEnd() {
return isShouldE
2.九宫格的工具类:
import android.content.C
import android.content.res.TypedA
import android.graphics.B
import android.graphics.BitmapF
import android.os.B
import android.os.H
import android.os.M
import android.util.AttributeS
import android.util.L
import android.view.LayoutI
import android.view.MotionE
import android.view.V
import android.view.View.OnTouchL
import android.view.WindowM
import android.widget.ImageV
import android.widget.LinearL
import android.widget.TextV
import java.util.R
* 九宫格工具类
public class LuckyView extends LinearLayout implements Runnable,OnTouchListener{
private Context mC
private AttributeSet mA
private int mItemSize = 9;
* 抽奖的文字
private String[] mStrs = new String[] { &单反相机&, &IPAD&, &恭喜发财&, &IPHONE&,
&妹子一只&, &恭喜发财&,&妹子一只&, &恭喜发财&,&妹子一只& };
* 每个盘块的颜色
private int[] mColors = new int[] { 0xFFFFC300, 0xFFF17E01, 0xFFFFC300,
0xFFF17E01, 0xFFFFC300, 0xFFF17E01,0xFFF17E01, 0xFFFFC300, 0xFFF17E01 };
* 与文字对应的图片
private int[] mImgs = new int[] { R.mipmap.danfan, R.mipmap.ipad,
R.mipmap.f040, R.mipmap.iphone, R.mipmap.meizi,
R.mipmap.f040 , R.mipmap.iphone, R.mipmap.meizi,
R.mipmap.f040};
public static final int MESSAGE_9 = 9;
public static final int MESSAGE_1 = 1;
public static final int MESSAGE_2 = 2;
public static final int MESSAGE_3 = 3;
public static final int MESSAGE_4 = 4;
public static final int MESSAGE_5 = 5;
public static final int MESSAGE_6 = 6;
public static final int MESSAGE_7 = 7;
public static final int MESSAGE_8 = 8;
public static final int MESSAGE_11 = 11;
public static final int MESSAGE_22 = 22;
public static final int MESSAGE_33 = 33;
public static final int MESSAGE_44 = 44;
public static final int MESSAGE_55 = 55;
public static final int MESSAGE_66 = 66;
public static final int MESSAGE_77 = 77;
public static final int MESSAGE_88 = 88;
public static final int MESSAGE_STOP = 10;
boolean IsLongPressed =
int flag = 1;
int number = 8;
TextView tv1;
TextView tv2;
TextView tv3;
TextView tv4;
TextView tv5;
TextView tv6;
TextView tv7;
TextView tv8;
TextView tv9;
Bitmap wheel1;
Bitmap wheel2;
Bitmap wheel3;
Bitmap wheel4;
Bitmap wheel5;
Bitmap wheel6;
Bitmap wheel7;
Bitmap wheel8;
public LuckyView(Context context, AttributeSet attrs, int defStyle) {
super(context, attrs, defStyle);
mContext =
public LuckyView(Context context, AttributeSet attrs) {
super(context, attrs);
mContext =
public LuckyView(Context context) {
super(context);
mContext =
public void init(){
setOrientation(VERTICAL);
TypedArray array = mContext.obtainStyledAttributes(mAttrs, R.styleable.LuckyView);
mItemSize = array.getInt(R.styleable.LuckyView_size, 0);
View view = LayoutInflater.from(mContext).inflate(R.layout.item, this);
tv1 = (TextView)findViewById(R.id.tv1);
tv2 = (TextView)findViewById(R.id.tv2);
tv3 = (TextView)findViewById(R.id.tv3);
tv4 = (TextView)findViewById(R.id.tv4);
tv5 = (TextView)findViewById(R.id.tv5);
tv6 = (TextView)findViewById(R.id.tv6);
tv7 = (TextView)findViewById(R.id.tv7);
tv8 = (TextView)findViewById(R.id.tv8);
tv9 = (TextView)findViewById(R.id.tv9);
tv1.setBackgroundResource(mImgs[0]);
tv2.setBackgroundResource(mImgs[1]);
tv3.setBackgroundResource(mImgs[2]);
tv4.setBackgroundResource(mImgs[3]);
tv5.setBackgroundResource(mImgs[4]);
tv6.setBackgroundResource(mImgs[5]);
tv7.setBackgroundResource(mImgs[6]);
tv8.setBackgroundResource(mImgs[7]);
tv1.setText(mStrs[0]);
tv2.setText(mStrs[1]);
tv3.setText(mStrs[2]);
tv4.setText(mStrs[3]);
tv5.setText(mStrs[4]);
tv6.setText(mStrs[5]);
tv7.setText(mStrs[6]);
tv8.setText(mStrs[7]);
tv9.setText(&Run&);
tv9.setOnTouchListener(this);
iv = (ImageView)findViewById(R.id.iv);
WindowManager wm=(WindowManager)mContext.getSystemService(Context.WINDOW_SERVICE);
width=wm.getDefaultDisplay().getWidth();
//手机屏幕的宽度
height=wm.getDefaultDisplay().getHeight()+90;
//手机屏幕的高度
wheel = BitmapFactory.decodeResource(getResources(), R.mipmap.wheel);
wheel1 = BitmapFactory.decodeResource(getResources(), R.mipmap.wheel1);
wheel2 = BitmapFactory.decodeResource(getResources(), R.mipmap.wheel2);
wheel3 = BitmapFactory.decodeResource(getResources(), R.mipmap.wheel3);
wheel4 = BitmapFactory.decodeResource(getResources(), R.mipmap.wheel4);
wheel5 = BitmapFactory.decodeResource(getResources(), R.mipmap.wheel5);
wheel6 = BitmapFactory.decodeResource(getResources(), R.mipmap.wheel6);
wheel7 = BitmapFactory.decodeResource(getResources(), R.mipmap.wheel7);
wheel8 = BitmapFactory.decodeResource(getResources(), R.mipmap.wheel8);
public void run() {
Handler mHandler = new Handler() {
public void handleMessage(Message msg) {
switch (msg.what) {
case MESSAGE_1:
iv.setImageBitmap(wheel1);
tv1.setText(mStrs[MESSAGE_1-1]);
case MESSAGE_2:
iv.setImageBitmap(wheel2);
tv2.setText(mStrs[MESSAGE_2-1]);
case MESSAGE_3:
iv.setImageBitmap(wheel3);
tv3.setText(mStrs[MESSAGE_3-1]);
case MESSAGE_4:
iv.setImageBitmap(wheel4);
tv4.setText(mStrs[MESSAGE_4-1]);
case MESSAGE_5:
iv.setImageBitmap(wheel5);
tv5.setText(mStrs[MESSAGE_5-1]);
case MESSAGE_6:
iv.setImageBitmap(wheel6);
tv6.setText(mStrs[MESSAGE_6-1]);
case MESSAGE_7:
iv.setImageBitmap(wheel7);
tv7.setText(mStrs[MESSAGE_7-1]);
case MESSAGE_8:
iv.setImageBitmap(wheel8);
tv8.setText(mStrs[MESSAGE_8-1]);
case MESSAGE_11:
case MESSAGE_22:
case MESSAGE_33:
case MESSAGE_44:
case MESSAGE_55:
case MESSAGE_66:
case MESSAGE_77:
case MESSAGE_88:
case MESSAGE_STOP:
Bundle bundle = new Bundle();
bundle = msg.getData();
int i = bundle.getInt(&msg&);
tv9.setText(&RUN&);
switch (i%8) {
public boolean onTouch(View v, MotionEvent event) {
Message msg = new Message();
if(event.getAction()==MotionEvent.ACTION_DOWN){
//zhongjian
tv9.setText(&RUNNING&);
Random random = new Random();
number = random.nextInt((8))+1;
Log.i(&chz&,&&+number);
new Thread(new Runnable() {
public void run() {
Random random = new Random();
int num = random.nextInt((8));
Log.i(&chz&,&&+(num+3));
while(number&60+num){
Message message = new Message();
switch (number%8) {
message.what = MESSAGE_8;
message.what = MESSAGE_1;
message.what = MESSAGE_2;
message.what = MESSAGE_3;
message.what = MESSAGE_4;
message.what = MESSAGE_5;
message.what = MESSAGE_6;
message.what = MESSAGE_7;
message.what = MESSAGE_8;
number++;
Bundle bundle = new Bundle();
bundle.putString(&msg&, &chzlovehp&);
message.setData(bundle);
mHandler.sendMessage(message);
if(number&50){
Thread.sleep(100);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}else if(number&50 && number&60){
Thread.sleep(300);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
Thread.sleep(400);
} catch (InterruptedException e) {
// TODO Auto-generated catch block
e.printStackTrace();
Message message = new Message();
message.what = MESSAGE_STOP;
Bundle bundle = new Bundle();
bundle.putInt(&msg&, (num+3));
message.setData(bundle);
mHandler.sendMessage(message);
}).start();
mHandler.sendMessage(msg);
------------------就那么简单,有不懂得自己下demo看,不喜勿喷、
------------------demo地址:点击打开链接
以上就是之仿腾讯游戏转盘抽奖的全文介绍,希望对您学习Android应用开发有所帮助.
这些内容可能对你也有帮助
更多可查看Android开发列表页。
猜您也会喜欢这些文章查看: 3678|回复: 116
cocos2d2.2.3实现一个《抽奖转盘》源码下载
主题帖子积分
论坛元老, 积分 464840, 距离下一级还需 9535159 积分
论坛元老, 积分 464840, 距离下一级还需 9535159 积分
用cocos2d-2.2.3实现的一个转盘抽奖的功能,可以设定抽到哪个,设定旋转角度等。+ I# }6 L# d+ e( ~+ \/ z$ G3 T' ]$ j
没有上传整个工程,只是上传了相关类,直接create就OK了。6 w( X1 X7 a$ ?9 g: D( F0 v
11.png (188.87 KB, 下载次数: 6)
23:07 上传
7 b, X' G! l& z/ X
游客,如果您要查看本帖隐藏内容请
游戏咖啡屋-最好的游戏编程源码技术网站!1、本主题所有言论和图片纯属会员个人意见,与本论坛立场无关 交流QQ群:
2、本站所有主题由该帖子作者发表,该帖子作者与享有帖子相关版权
4、如本帖侵犯到任何版权问题,请立即告知本站,本站将及时予与删除并致以最深的歉意
哈...今天心情不错,来游戏咖啡区签到了...
主题帖子积分
论坛元老, 积分 17177, 距离下一级还需 9982822 积分
论坛元老, 积分 17177, 距离下一级还需 9982822 积分
看看这个是什么。。。。。。。
哎...今天够累的,签到来了游戏源码下载...
主题帖子积分
论坛元老, 积分 34479, 距离下一级还需 9965520 积分
论坛元老, 积分 34479, 距离下一级还需 9965520 积分
看起来非常不错哦,哇咔咔
哎...今天够累的,签到来了游戏源码下载...
主题帖子积分
论坛元老, 积分 8589, 距离下一级还需 9991410 积分
论坛元老, 积分 8589, 距离下一级还需 9991410 积分
& X6 d% F% S! q
非常感谢分享,学习下
哎...今天够累的,签到来了游戏源码下载...
主题帖子积分
中级会员, 积分 378, 距离下一级还需 122 积分
中级会员, 积分 378, 距离下一级还需 122 积分
~~~~~~~~~~~~~~顶~~~~~~~~~~~~~~~
不知道说点啥
主题帖子积分
高级会员, 积分 836, 距离下一级还需 164 积分
高级会员, 积分 836, 距离下一级还需 164 积分
实打实的都是的方式对公司的反倒是规范化和电话
主题帖子积分
try try try try try try try try try try try try try try try try try
主题帖子积分
注册会员, 积分 155, 距离下一级还需 45 积分
注册会员, 积分 155, 距离下一级还需 45 积分
主题帖子积分
金牌会员, 积分 2466, 距离下一级还需 534 积分
金牌会员, 积分 2466, 距离下一级还需 534 积分
cocos2d2.2.3实现一个《抽奖转盘》源码
哎...今天够累的,签到来了游戏源码下载...
主题帖子积分
注册会员, 积分 100, 距离下一级还需 100 积分
注册会员, 积分 100, 距离下一级还需 100 积分
DFASDFASDFDS
注册账号后积极发帖的会员
积极宣传本站,为本站带来更多的用户访问量
经常在论坛发帖,且发帖量较大
曾经为论坛做出突出贡献目前已离职的版主
Powered byH5微信游戏红包大转盘抽奖源码/摇奖转盘源码定制开发 - 连我巴巴
全部商品分类
当前位置: >
H5微信游戏红包大转盘抽奖源码/摇奖转盘源码定制开发
本站优惠价
原价:¥10000.00
由""发货,并提供售后服务。
担保交易,安全保证,有问题不解决可申请退款。
精品源码网
掌柜:kiss
宝贝:10件
本店销售榜
您的浏览记录
服务:安装调试 BUG修复
开发语言:PHP
数据库:mysql
程序大小:86
H5微信各种游戏摇奖转盘源码定制开发联系QQ:
交易流程服务类流程发货方式1、自动:在上方保障服务中标有自动发货的商品,拍下后,将会自动收到来自卖家的商品获取(下载)链接;2、手动:未标有自动发货的的商品,拍下后,卖家会收到邮件、短信提醒,也可通过QQ或订单中的电话联系对方。退款说明1、描述:源码描述(含标题)与实际源码不一致的(例:描述PHP实际为ASP、描述的功能实际缺少、版本不符等);2、演示:有演示站时,与实际源码小于95%一致的(但描述中有&不保证完全一样、有变化的可能性&类似显著声明的除外);3、发货:手动发货源码,在卖家未发货前,已申请退款的;4、服务:卖家不提供安装服务或需额外收费的(但描述中有显著声明的除外);5、其他:如质量方面的硬性常规问题等。注:经核实符合上述任一,均支持退款,但卖家予以积极解决问题则除外。交易中的商品,卖家无法对描述进行修改!注意事项1、在未拍下前,双方在QQ上所商定的内容,亦可成为纠纷评判依据(商定与描述冲突时,商定为准);2、在商品同时有网站演示与图片演示,且站演与图演不一致时,默认按图演作为纠纷评判依据(特别声明或有商定除外);3、在没有&无任何正当退款依据&的前提下,写有&一旦售出,概不支持退款&等类似的声明,视为无效声明;4、虽然交易产生纠纷的几率很小,但请尽量保留如聊天记录这样的重要信息,以防产生纠纷时便于连我巴巴介入快速处理。连我巴巴声明1、连我巴巴作为第三方中介平台,依据交易合同(商品描述、交易前商定的内容)来保障交易的安全及买卖双方的权益;2、非平台线上交易的项目,出现任何后果均与连我巴巴无关;无论卖家以何理由要求线下交易的,请联系管理举报。
连我巴巴 | 沪ICP备号-1
扫一扫进手机版主题 : 基于cocos2d-js游戏转盘demo
级别: 新手上路
可可豆: 80 CB
威望: 80 点
在线时间: 24(时)
发自: Web Page
来源于&&分类
基于cocos2d-js游戏转盘demo&&&
很多游戏中都有转盘中奖的设置,学习不久就把转盘来练手即熟悉了api同时也有点实用价值的。
核心代码如下:
var MenuLayer= cc.Layer.extend({
    sprite:null,
    ctor:function(){
        this._super();
        var size = cc.winS
        var center_x=size.width*0.5;
        var center_y=size.height*0.5;
        
        //转盘
        var zp_sprite=new cc.Sprite(res.zhuan_pan_png);
        zp_sprite.x=center_x;
        zp_sprite.y=center_y;
        this.addChild(zp_sprite);
        //数据初始化
        var zp_cx=zp_sprite.width*0.5;
        var zp_cy=zp_sprite.height*0.5;
        var zp_len=135;
        var e_rot=2*Math.PI/8;
        
        var data=[{&img&:res.asset1_png,&name&:&樱桃&},
                  {&img&:res.asset2_png,&name&:&番茄&},
                  {&img&:res.asset3_png,&name&:&红萝卜&},
                  {&img&:res.asset4_png,&name&:&包菜&},
                  {&img&:res.asset5_png,&name&:&南瓜&},
                  {&img&:res.asset6_png,&name&:&草莓&},
                  {&img&:res.asset7_png,&name&:&花菜&},
                  {&img&:res.asset8_png,&name&:&胡萝卜&}]
        var len=data.
        
        for(var i=0;i&i++)
        {
            var item=data
            var asset=new cc.Sprite(item.img);
            asset.tag=100+i;
            var rot=i*e_rot+0.5*e_
            asset.x=zp_cx+zp_len*Math.sin(rot);
            asset.y=zp_cy+zp_len*Math.cos(rot);
            zp_sprite.addChild(asset);
        }
        //提示
        var infoLabel = new cc.LabelTTF(&请滑动转盘&, &Arial&, 21);
        infoLabel.x = 50+infoLabel.width*0.5;
        infoLabel.y = center_y;
        this.addChild(infoLabel);
        
        //手
        var shou_spr=new cc.Sprite(res.shou_png);
        var org_shou_x=infoLabel.x;
        var org_shou_y=size.height-80;
        shou_spr.x=org_shou_x;
        shou_spr.y=org_shou_y;
        this.addChild(shou_spr)
        
        //箭头
        var jt_spr=new cc.Sprite(res.jian_tou_png);
        jt_spr.x=center_x;
        jt_spr.y=center_y;
        this.addChild(jt_spr)
        //指针指向的动画
        var cur_tex=cc.textureCache.addImage(res.asset1_png);
        var cur_spr=new cc.Sprite(cur_tex);
        cur_spr.x=center_x;
        cur_spr.y=center_y;
        this.addChild(cur_spr)
        
        //滑动侦听
        var listener=cc.EventListener.create({
            event: cc.EventListener.TOUCH_ONE_BY_ONE,
            swallowTouches: true,
            onTouchBegan: function (touch, event) {
                //do something
                cc.log(&=====onTouchBegan======&);
                touch_x=touch.getLocation().y;
                
            },
            onTouchEnded:function(touch,event){
                cc.log(&=====onTouchEnded======&);
                var pos=touch.getLocation();
                speed=Math.floor(Math.abs(pos.y-touch_x)*0.5);
                acc=-speed*0.03;
                cc.log(&speed:&+speed+&|acc:&+acc)
            }
        });
        
        cc.eventManager.addListener(listener, shou_spr)
        
        //手滑动动画
        ani_shou_handler=function(){
            shou_spr.setPositionY(shou_spr.getPositionY()-21);
            if(shou_spr.getPositionY()&100)
            {
                shou_spr.setPositionY(org_shou_y)
            }
        }
        
        //转盘转动动画
        var touch_x=0;
        var rot=0;
        var speed=0;
        var acc=0;
        var ani_zp_handler=function(){
            speed+=acc
            if(speed&0)
            {
                acc=0.1                
            }
            else if(speed&0&&speed&0.2)
            {
                speed=0;
                acc=0;
            }
            zp_sprite.setRotation(zp_sprite.getRotation()+speed);    
            
            var p=zp_sprite.convertToNodeSpace(cc.p(center_x,center_y+zp_len));
            var len=data.
            var temp_tag=0;
            var temp_distance=10000;
            for(var i=0;i&i++)
            {
                var child=zp_sprite.getChildByTag(i+100)
                var distance=(child.x-p.x)*(child.x-p.x)+(child.y-p.y)*(child.y-p.y)
                if(distance&temp_distance)
                {
                    temp_distance=
                    temp_tag=i;
                }
            }
            cur_tex=cc.textureCache.addImage(data[temp_tag].img);
            cur_spr.setTexture(cur_tex)
            
        }
        
        cc.director.getScheduler().scheduleCallbackForTarget(
                shou_spr,ani_shou_handler,0.1,cc.REPEAT_FOREVER,0,false)
        cc.director.getScheduler().scheduleCallbackForTarget(
                zp_sprite,ani_zp_handler,0.1,cc.REPEAT_FOREVER,0,false);
        
    }
blog原文地址:再赚个外链
(231 K) 下载次数:195
色彩时光:
关注本帖(如果有新回复会站内信通知您)
发帖、回帖都会得到可观的积分奖励。
按"Ctrl+Enter"直接提交
关注CocoaChina
关注微信 每日推荐
扫一扫 关注CVP公众号
扫一扫 浏览移动版

我要回帖

更多关于 游戏开发物语 8人 的文章

 

随机推荐