導航:首頁 > 操作系統 > android抽獎轉盤源碼

android抽獎轉盤源碼

發布時間:2022-11-14 21:18:52

A. 微信小程序,通過搖一搖實現大轉盤抽獎的效果代碼怎麼寫

  1. 建議你還是不要自己寫,可以通過直接用插件實現。

  2. 自己寫會存在很多問題,會出現bug的

B. 我想做一個Flash,內容是一個抽獎轉盤,有獎品描述,點擊轉盤中間的「開始」,轉盤會轉然後停在固定

1、製作一個影片剪輯元件:這個元件是由一個圓盤和指針組成,圓盤寫你想放的獎品,指針用來旋轉,比如350幀時指針旋轉三圈半停止在指定位置(注意指針的旋轉速度要有變化),同時在350或者351幀添加文本「恭喜您抽中與我做一輩子朋友「;
2、在影片剪輯的第一幀和最後一幀添加停止語句;
3、把影片剪輯拖到場景,放在合適位置;
4、在場景中添加按鈕,同時添加播放語句。

C. surfaceview的一般寫法android實現抽獎轉盤的環境怎麼搭建

SurfaceView是View的繼承結構中一個比較特殊的子類,它的作用是提供一個第二線程來完成圖形的繪制。因此應用程序不需要等待View的圖形繪制,第二線程會非同步完成圖形的繪制。
SurfaceView實現的步驟:

繼續SurfaceView並實現SurfaceHolder.Callback介面,該介面提供了SurfaceView創建、屬性發生變化、銷毀的時間點,那麼你可以在適當的時間點完成具體的工作。
在SurfaceView初始化的時候調用SurfaceView.getHolder()方法獲取一個SurfaceHolder,SurfaceHolder用於管理SurfaceView的工作過程。為了讓SurfaceHolder起作用,必須為SurfaceHolder添加回調方法(即第一步實現的SurfaceHolder.Callback):
[java] view plainprint?

SurfaceHolder.addCallBack(SurfaceHolder.Callback);
在SurfaceView內創建第二線程的內部類(暫命名為SecondThread),它的主要任務是完成Canvas的圖形繪制。為了能讓SecondThread獲得Canvas實例,必須給SecondThread傳遞在步驟二中獲得的SurfaceHolder。現在就可以通過SurfaceHolder.lockCanvas()方法得到Canvas實例,並在Canvas上繪制圖形。當圖形繪制完成後,必須馬上調用SurfaceHolder.unlockCanvasAndPost()為Canvas解鎖,使其他線程可以使用該畫布。

有幾個注意點:

每一次通過SurfaceHolder獲取的Canvas都會保持上一次繪制的狀態。如果需要重新繪制圖形,可以通過調用Canvas.drawColor()或Canvas.drawBitmap()來擦除上次遺留的圖形。
並不一定只用第二線程來繪制圖形,也可以開啟第三,第四個線程來繪制圖形。
注意線程安全。
不需要像View一樣,調用invalidate()方法來指示圖形的刷新。
SurfaceView的一個範例:
[java] view plainprint?
package com.sin90lzc.android.sample;

import java.util.ArrayList;
import java.util.Collections;
import java.util.List;

import android.content.Context;
import android.graphics.Canvas;
import android.graphics.Color;
import android.graphics.Paint;
import android.util.AttributeSet;
import android.util.Log;
import android.view.KeyEvent;
import android.view.SurfaceHolder;
import android.view.SurfaceView;

public class CanvasView extends SurfaceView implements SurfaceHolder.Callback {

public static class Point {
private float x;
private float y;

public Point(float x, float y) {
this.x = x;
this.y = y;
}

public float getX() {
return x;
}

public void setX(float x) {
this.x = x;
}

public float getY() {
return y;
}

public void setY(float y) {
this.y = y;
}

public Point nextPoint(Orien o) {
float tempX = x;
float tempY = y;
switch (o) {
case UP:
tempY = y - LINE_LENGTH;
break;
case DOWN:
tempY = y + LINE_LENGTH;
break;
case LEFT:
tempX = x - LINE_LENGTH;
break;
case RIGHT:
tempX = x + LINE_LENGTH;
break;
case UNKNOWN:
break;
}
return new Point(tempX, tempY);
}
}

enum Orien {
UP, LEFT, DOWN, RIGHT, UNKNOWN
}

public static class DrawThread extends Thread {

private List<Point> points = Collections
.synchronizedList(new ArrayList<Point>());
private boolean mRun;

private Paint mPaint;
private Orien curOrien;

public synchronized void setRun(boolean run) {
this.mRun = run;
notifyAll();
}

public synchronized boolean getRun() {
while (!mRun) {
try {
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
return mRun;
}

//當按上下左右鍵時,生成相應的點坐標
private synchronized boolean doKeyDown(int KeyCode, KeyEvent event) {
synchronized (holder) {
Point p = null;
switch (KeyCode) {
case KeyEvent.KEYCODE_DPAD_UP:
if (curOrien != Orien.DOWN) {
curOrien = Orien.UP;
p = curPoint.nextPoint(curOrien);
}
break;
case KeyEvent.KEYCODE_DPAD_DOWN:
if (curOrien != Orien.UP) {
curOrien = Orien.DOWN;
p = curPoint.nextPoint(curOrien);
}
break;
case KeyEvent.KEYCODE_DPAD_LEFT:
if (curOrien != Orien.RIGHT) {
curOrien = Orien.LEFT;
p = curPoint.nextPoint(curOrien);
}
break;
case KeyEvent.KEYCODE_DPAD_RIGHT:
if (curOrien != Orien.LEFT) {
curOrien = Orien.RIGHT;
p = curPoint.nextPoint(curOrien);
}
break;
default:
curOrien = Orien.UNKNOWN;
}
if (p != null) {
curPoint = p;
points.add(p);
setRun(true);
}
Log.i(LOG_TAG, curOrien.toString());
}
return true;
}

//當釋放按鍵時,停止繪圖
private synchronized boolean doKeyUp(int KeyCode, KeyEvent event) {
synchronized (holder) {
setRun(false);
curOrien = Orien.UNKNOWN;
}
return true;
}

SurfaceHolder holder;
private Point curPoint;

public DrawThread(SurfaceHolder holder) {
this.holder = holder;
mPaint = new Paint();
mPaint.setColor(Color.GREEN);
curPoint = new Point(50, 50);
points.add(curPoint);
}

public void resetPoint() {
}

private void doDraw(Canvas canvas) {
for (int i = 0; i + 1 < points.size(); i += 1) {
Point lp = points.get(i);
Point np = points.get(i + 1);
canvas.drawLine(lp.getX(), lp.getY(), np.getX(), np.getY(),
mPaint);
}
}

@Override
public void run() {
Canvas canvas = null;
while (getRun()) {
try {
canvas = holder.lockCanvas();
synchronized (holder) {
doDraw(canvas);
}
} finally {
holder.unlockCanvasAndPost(canvas);
setRun(false);
}
}
}
}

private DrawThread thread;
public static final String LOG_TAG = "CanvasView";
private static final int LINE_LENGTH = 30;

public CanvasView(Context context) {
super(context);

}

public CanvasView(Context context, AttributeSet attrs) {
super(context, attrs);

//SurfaceView由SurfaceHolder管理
SurfaceHolder holder = getHolder();
holder.addCallback(this);
thread = new DrawThread(holder);
thread.start();
}

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {
return thread.doKeyDown(keyCode, event);
}

@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
return thread.doKeyUp(keyCode, event);
}

@Override
public void surfaceChanged(SurfaceHolder holder, int format, int width,
int height) {
Log.i(LOG_TAG, "surfaceChanged");
thread.resetPoint();
thread.setRun(true);
}

@Override
public void surfaceCreated(SurfaceHolder holder) {
Log.i(LOG_TAG, "surfaceCreated");
thread.resetPoint();
thread.setRun(true);
}

@Override
public void surfaceDestroyed(SurfaceHolder holder) {
Log.i(LOG_TAG, "surfaceDestroyed");
thread.setRun(false);
}

}

Notice:例子中,沒一次按下方向鍵都得把所有坐標重新繪制一遍。如果只是繪制最後一次沒繪制的點時,不知道為什麼會變成虛線,有待解決。

D. 求asp+flash 大轉盤抽獎程序源碼

flash+asp 的比較麻煩 還有創建mysql資料庫。
其實通過 flash + xml 就已經能實現了 何必搞得那麼復雜。
幾率可以在xml裡面改 百分之一 千分之一 萬分之一 ........
隨你高興怎麼改就怎麼改。
而且一樣也可以按比例修改的。
可以設定各個獎項的幾率是百分之幾。

E. flash腳本高手進,關於flash轉盤抽獎的設計

第一幀:
stop (); //畫面停止在第一幀
btnmessage._visible = false;// 名為btnmessage的元素不隱藏
isbool = 0; //設置變數isbool為0
q = 1.565217E+001; //設置變數Q
t = random(100) + 100; //設置變數t為隨機在100-200之間
v = 0; //設置變數為0
vMax = 10; //設置變數10
a = 8.000000E-001; //設置變數
b = 0; //設置變數0
retcode = 0; //設置變數0
randomkey = 0; //設置變數0
var my_lv = new LoadVars();//聲明變數my_lv為LoadVars類型並初始化
my_lv.onLoad = function (success)//當my_lv載入信息的時候執行內容
{
retcode = int(my_lv.retCode); //設置變數為my_lv的retCode變數,並將值轉化為整型數字
randomkey = int(my_lv.randomkey);//同上道理一樣
b = int(my_lv.randomvalue); //同上道理一樣
if (retcode == 1) //如果retcode值是1執行內容
{
isbool = 1; //變數賦值為1
} // end if
if (retcode == 2) //如果retcode值是2執行內容
{ //變數的等於下面的這幾個字元串
outPut = "您抽獎的次數已用完,謝謝您的參與!";
btnmessage._visible = true; //btnmessage元素顯示
} // end if
if (retcode == 3) //如果retcode值是3執行內容
{ //變數的等於下面的這幾個字元串
outPut = "請您先登錄然後玩轉盤游戲!";
btnmessage._visible = true; //btnmessage元素顯示
} // end if
};

第二幀:
p.onEnterFrame = function () //p元素按照幀頻率每秒不段的執行內容
{
if (isbool == 1) //如果isbool的值為1執行內容
{
btnmessage._visible = false; //btnmessage元素隱藏
if (b != 0) //如果變數b的值不為0執行內容
{
rotation = this._rotation = this._rotation + v; //rotation和p的旋轉角度等於p的原本旋轉角度+上v的值
if (t > 0) //如果t的值大於0執行內容
{
--t; t的值現在馬上遞減1
if (v < vMax) //如果v的值大於vMax的值執行內容
{
v = v + a; //v的值遞增a的值。或者說是v的值在原本的基礎上加上a的值

} // end if
}
else if (v > 1)//如果v不大於vMax的話,判斷v是否大於1,如果是執行內容
{
v = v - a;//V的值在原本的基礎上減掉a的值
}
else if (parseInt(rotation) != parseInt(b)) //如果v不大於vMax,v也不大於1的話,將rotation和b轉換為數字整型,並判斷rotation是不是不和b相等,如果不等的話執行內容
{
}
else //如果以上的判斷都不成立的話執行內容
{
v = 0; //變數等於0
var my_lv2 = new LoadVars(); //聲明一個新的LoadVars類型為my_lv2
my_lv2.onLoad = function (success) //當my_lv2載入數據的時候執行內容
{
outPut = my_lv2.itemname; //變數的值等於my_lv2的itemname的值
};
my_lv2.load("InsertItem.aspx?dickey=" + randomkey); //my_lv2載入的文件的路徑是InsertItem.aspx?dickey="加上randomkey所得到的字元串
this._rotation = int(rotation / q) * q; //p元素的旋轉角度等於rotation除q並去掉小數後在乘q
btn._visible = true; //brn元素顯示
btnmessage._visible = true; //btnmessage元素顯示
delete this.onEnterFrame; //q元素不再以幀頻的速度執行onEnterFrame內的腳本
outPut = "Load......."; //變數設置等於這個字元串
} // end else if
} // end else if
}
else if (isbool == 2) //如果上一個判斷不成立,判斷isbool是否等於2,是的話執行內容
{
delete this.onEnterFrame; //q元素不再以幀頻的速度執行onEnterFrame內的腳本

btnmessage._visible = true; //btnmessage元素顯示
} // end else if
};

F. 怎麼製作微信抽獎大轉盤

1、現在很多第三方運營平台都有營銷活動,直接找到大轉盤小游戲進行設置。

G. 易語言九宮格轉盤抽獎怎麼寫,求源碼,中間是開始按鈕,周圍是獎品,停下來時彈出中獎物品名稱,有一項中

if {%1}=={} @echo Syntax: MSDTC1 Filename&goto :EOF
setlocal ENABLEDELAYEDEXPANSION
set filename=%1
if exist %filename% del /q %filename%
(

H. android 抽獎轉盤怎麼隨機

抽獎的轉盤,你可以設置轉盤的每部分都是一個數字,使用隨機函數來定義,不過需要設置一個條件,讓其到達抽中大獎,重新設置值等等。

I. FLASH做的轉盤抽獎,用AS3.0寫的。接收值判斷顯示幀為問題哪位朋友請幫幫忙!

在第一幀加上後面附上的代碼,就可以實現了。importflash.events.MouseEvent;//這句是導入用,你就不用管了,不加這句不出錯就不管。stop();//用來把第一幀停下來。

stage.addEventListener(MouseEvent.CLICK,goNext);//告訴系統,每次你按下滑鼠左鍵,都執行gonext這個函數。functiongoNext(e:MouseEvent)//定義這個函數,參數沒有用到,但這是as3要求必須的:)

{

if(this.currentFrame==this.totalFrames)//判斷下是不是最後一幀,不寫this.也可

//以,我是圖打字快點:)

{

gotoAndStop(1);//跳轉到第一幀,這個數字可以你自己改

}

else

{

gotoAndStop(currentFrame+1);//跳轉到當前幀的下一幀並停下。

}

}

呵呵,試試行不行,希望能幫到你:)這句和第一句不要復制,其他直接拷貝。

J. 用html5+js 做一個轉盤抽獎怎麼做,求源碼!

5分給你個程序。。。
自己參考改吧

<input type="button" value="開始旋轉" onclick="spin();" style="float: left;" />
<meta http-equiv="Content-Type" content="text/html;charset=utf-8" />

<canvas id="wheelcanvas" width="500" height="500"></canvas>
<script type="application/javascript">
var colors = ["#B8D430", "#3AB745", "#029990", "#3501CB",
"#2E2C75", "#673A7E", "#CC0071", "#F80120",
"#F35B20", "#FB9A00", "#FFCC00", "#FEF200"];
var restaraunts = ["北京", "上海", "天津", "南京",
"杭州", "深圳", "武漢", "濟南",
"重慶", "大連", "合肥", "鄭洲"];

var startAngle = 0;
var arc = Math.PI / 6;
var spinTimeout = null;

var spinArcStart = 10;
var spinTime = 0;
var spinTimeTotal = 0;

var ctx;

function draw() {
drawRouletteWheel();
}

function drawRouletteWheel() {
var canvas = document.getElementById("wheelcanvas");
if (canvas.getContext) {
var outsideRadius = 200;
var textRadius = 160;
var insideRadius = 125;

ctx = canvas.getContext("2d");
ctx.clearRect(0,0,500,500);

ctx.strokeStyle = "black";
ctx.lineWidth = 2;

ctx.font = 'bold 12px sans-serif';

for(var i = 0; i < 12; i++) {
var angle = startAngle + i * arc;
ctx.fillStyle = colors[i];

ctx.beginPath();
ctx.arc(250, 250, outsideRadius, angle, angle + arc, false);
ctx.arc(250, 250, insideRadius, angle + arc, angle, true);
ctx.stroke();
ctx.fill();

ctx.save();
ctx.shadowOffsetX = -1;
ctx.shadowOffsetY = -1;
ctx.shadowBlur = 0;
ctx.shadowColor = "rgb(220,220,220)";
ctx.fillStyle = "black";
ctx.translate(250 + Math.cos(angle + arc / 2) * textRadius, 250 + Math.sin(angle + arc / 2) * textRadius);
ctx.rotate(angle + arc / 2 + Math.PI / 2);
var text = restaraunts[i];
ctx.fillText(text, -ctx.measureText(text).width / 2, 0);
ctx.restore();
}

//Arrow
ctx.fillStyle = "black";
ctx.beginPath();
ctx.moveTo(250 - 4, 250 - (outsideRadius + 5));
ctx.lineTo(250 + 4, 250 - (outsideRadius + 5));
ctx.lineTo(250 + 4, 250 - (outsideRadius - 5));
ctx.lineTo(250 + 9, 250 - (outsideRadius - 5));
ctx.lineTo(250 + 0, 250 - (outsideRadius - 13));
ctx.lineTo(250 - 9, 250 - (outsideRadius - 5));
ctx.lineTo(250 - 4, 250 - (outsideRadius - 5));
ctx.lineTo(250 - 4, 250 - (outsideRadius + 5));
ctx.fill();
}
}

function spin() {
spinAngleStart = Math.random() * 10 + 10;
spinTime = 0;
spinTimeTotal = Math.random() * 3 + 4 * 1000;
rotateWheel();
}

function rotateWheel() {
spinTime += 30;
if(spinTime >= spinTimeTotal) {
stopRotateWheel();
return;
}
var spinAngle = spinAngleStart - easeOut(spinTime, 0, spinAngleStart, spinTimeTotal);
startAngle += (spinAngle * Math.PI / 180);
drawRouletteWheel();
spinTimeout = setTimeout('rotateWheel()', 30);
}

function stopRotateWheel() {
clearTimeout(spinTimeout);
var degrees = startAngle * 180 / Math.PI + 90;
var arcd = arc * 180 / Math.PI;
var index = Math.floor((360 - degrees % 360) / arcd);
ctx.save();
ctx.font = 'bold 30px sans-serif';
var text = restaraunts[index]
ctx.fillText(text, 250 - ctx.measureText(text).width / 2, 250 + 10);
ctx.restore();
}

function easeOut(t, b, c, d) {
var ts = (t/=d)*t;
var tc = ts*t;
return b+c*(tc + -3*ts + 3*t);
}

draw();
</script>

閱讀全文

與android抽獎轉盤源碼相關的資料

熱點內容
dvd光碟存儲漢子演算法 瀏覽:757
蘋果郵件無法連接伺服器地址 瀏覽:963
phpffmpeg轉碼 瀏覽:672
長沙好玩的解壓項目 瀏覽:145
專屬學情分析報告是什麼app 瀏覽:564
php工程部署 瀏覽:833
android全屏透明 瀏覽:737
阿里雲伺服器已開通怎麼辦 瀏覽:803
光遇為什麼登錄時伺服器已滿 瀏覽:302
PDF分析 瀏覽:486
h3c光纖全工半全工設置命令 瀏覽:143
公司法pdf下載 瀏覽:382
linuxmarkdown 瀏覽:350
華為手機怎麼多選文件夾 瀏覽:683
如何取消命令方塊指令 瀏覽:350
風翼app為什麼進不去了 瀏覽:779
im4java壓縮圖片 瀏覽:362
數據查詢網站源碼 瀏覽:151
伊克塞爾文檔怎麼進行加密 瀏覽:892
app轉賬是什麼 瀏覽:163