- ๋ฃฐ๋ ์ด๋ฏธ์ง (ํ์ฅ์: png)
- ํ ์ด๋ฏธ์ง
- ๋ฃฐ๋ ์ด๋ฏธ์ง ์ด๋ฆ์ ์ด๋ฏธ์ง์ด๋ฆ-์ด๋ฏธ์ง๋ฒํธ.png ex) rouletteImg-2.png , ์ฌ๊ธฐ์ ์ด๋ฏธ์ง ๋ฒํธ๋ ๋ฃฐ๋ ์ ์นธ ์๋ฅผ ๋ํ๋.
- ์ด๋ฏธ์ง ๋ชจ์
npm i roulette-img
import { Roulette } from "roulette-img";
//ํ์ํ ๋ฐ์ดํฐ ์ ๋ฆฌ
export interface Roulette {
imgUrl: string; //ํ์๊ฐ
arrowImgUrl: string; //ํ์๊ฐ
chunkRange: ChunkRange; //ํ์๊ฐ
chunk?: number;
arrowPosition?: Arrow;
winNumber?: winNumber;
buttonText?: string;
buttonShape?: ButtonShape;
buttonStyle?: React.ReactNode; // ํ๊ทธ๋ฅผ ๋ฆฌํด๊ฐ์ผ๋ก ๋ณด๋ด ๋ฒํผ์ ์ปค์คํฐ๋ง์ด์ง ํ ์ ์์ต๋๋ค
onWin?: (winNumber: number | null) => void;
}
//ํ์ํ ๊ณ ์ ์ปดํฌ๋ํธ ์
๋๋ค
<Roulette
imgUrl="/assets/bg_circle-" //๋ฒํธ์ ํ์ฅ์๋ฅผ ์ ์ธํ "-"๊น์ง ์ ์ด์ฃผ์ธ์
arrowImgUrl="/assets/arrow.png"
chunkRange={{ start: 2, end: 6 }} //์ค๋นํ ๋ฃฐ๋ ์ด๋ฏธ์ง์ ์ต์ ์นธ๊ณผ ์ต๋ ์นธ์ ์ ์ด์ฃผ์ธ์
></Roulette>
//์ ํ ์ปดํฌ๋ํธ ์
๋๋ค
<Roulette
imgUrl="/assets/bg_circle-" //๋ฒํธ์ ํ์ฅ์๋ฅผ ์ ์ธํ "-"๊น์ง ์ ์ด์ฃผ์ธ์
arrowImgUrl="/assets/arrow.png"
chunkRange={{ start: 2, end: 6 }} //์ค๋นํ ๋ฃฐ๋ ์ด๋ฏธ์ง์ ์ต์ ์นธ๊ณผ ์ต๋ ์นธ์ ์ ์ด์ฃผ์ธ์
chunk = 3 //๋ฃฐ๋ ์ ์นธ | ๊ธฐ๋ณธ๊ฐ:chunkRange.start | [chunkRange์" ๋ฒ์]
arrowPosition = "up" //ํ์ ์์น | ๊ธฐ๋ณธ๊ฐ :"up" | ["up","down","left","right]
winNumber //๋น์ฒจ ๋ฒํธ | ๊ธฐ๋ณธ๊ฐ: ๋๋ค | [chunkRange์" ๋ฒ์]
buttonText = "start" //๋ฒํผํ
์คํธ | ๊ธฐ๋ณธ๊ฐ: start
buttonShape = "round" //๋ฒํผ ๋ชจ์ | ๊ธฐ๋ณธ๊ฐ: round | [round,squre]
></Roulette>
<Roulette
imgUrl="/assets/bg_circle-"
arrowImgUrl="/assets/arrow.png"
chunkRange={{ start: 2, end: 6 }}
chunk = 2
arrowPosition = "up" //ํ์ ์์น | ๊ธฐ๋ณธ๊ฐ :"up" | ["up","down","left","right]
buttonText = "start" //๋ฒํผํ
์คํธ | ๊ธฐ๋ณธ๊ฐ: start
buttonShape = "round" //๋ฒํผ ๋ชจ์ | ๊ธฐ๋ณธ๊ฐ: round | [round,squre]
></Roulette>
<Roulette
imgUrl="/assets/bg_circle-"
arrowImgUrl="/assets/arrow.png"
chunkRange={{ start: 2, end: 6 }}
chunk = 4
arrowPosition = "left" //ํ์ ์์น | ๊ธฐ๋ณธ๊ฐ :"up" | ["up","down","left","right]
winNumber={{number:4,option:"none"}} //๋น์ฒจ ๋ฒํธ | ๊ธฐ๋ณธ๊ฐ: ๋๋ค | [chunkRange์" ๋ฒ์]
buttonText = "start" //๋ฒํผํ
์คํธ | ๊ธฐ๋ณธ๊ฐ: start
buttonShape = "square" //๋ฒํผ ๋ชจ์ | ๊ธฐ๋ณธ๊ฐ: round | [round,squre]
></Roulette>
๋ฃฐ๋ ์ด๋ฏธ์ง - .roulette ํ ์ด๋ฏธ์ง - .arrow ์คํํธ ๋ฒํผ - .start-button
.start-button {
color: yellow;
background-color: red;
}
- ๋น์ฒจ ๋ฒํธ ์ฝ๋ฐฑ ํจ์
const [winNumber, setWinNumber] = useState(0);
const getWinNumber = (number: number) => {
setWinNumber(number);
};
<Roulette
imgUrl="/assets/bg_circle-"
arrowImgUrl="/assets/arrow.png"
chunkRange={{ start: 2, end: 6 }}
onWin={getWinNumber}
></Roulette>;
- ์์ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ๋น์ฒจ ๋ฒํธ๋ฅผ ์ปจํธ๋กคํ ์ ์์ต๋๋ค.
- ๋ฒํผ ์ปค์คํ ๊ธฐ๋ฅ
<Roulette
imgUrl="/assets/bg_circle-"
arrowImgUrl="/assets/arrow.png"
chunkRange={{ start: 2, end: 6 }}
buttonStyle={
<>
<button>hello</button>
</>
}
></Roulette>
- ์์ ๊ฐ์ ๋ฐฉ๋ฒ์ผ๋ก ๊ณ ์ ๋ฒํผ์ด ์๋ ์ง์ ๋ฒํผ์ ์ปค์คํ ํ ์ ์์ต๋๋ค.
- ์ฐ์ ์์ buttonText,buttonShape < button.style
๋น์ฒจ๋ฒํธ๋ฅผ ์ธ๋ถ api์์ ๋ฐ์์จ ํ ๋๊ธธ์ ์์ต๋๋ค.
//ํ์
์ด ๋ณ๊ฒฝ๋์์ต๋๋ค.
export interface Roulette {
...
winNumber?: number | null;
drivingType?: winNumberOption;
...
}
export type winNumberOption = "async" | undefined;
//async์ต์
์ ์ธ๋ถ api์์ ๋น์ฒจ๋ฒํธ๋ฅผ ๋ฐ์์ ์ฌ์ฉํ ๋ - buttonStyle์ต์
์ ์ฌ์ฉํด ์ปค์คํฐ๋ง์ด์ง ๋ฒํผ์ ๋ง๋ ํ ์ง์ api์ ์ฐ๊ฒฐํด์ฃผ์ธ์
const [winNumber, setWinNumber] = useState<number | null>(null);
const clickButton = () => {
setWinNumber(null); // null๋ก ์ด๊ธฐํ๋ฅผ ํ๋ฉด ๋ฒํผ์ ๋๋ฅผ๋๋ง๋ค ๋ฃฐ๋ ๋์๊ฐ ์๋์ ํ๋ฒ๋ง ๋์๊ฐ
setTimeout(() => {
setWinNumber(2);
}, 3000);
};
return (
<div className="App">
//์ธ๋ถ API์์ ๋น์ฒจ๊ฐ์ ๋ฐ์ ๋ณด๋ผ๋
<Roulette
imgUrl="/assets/bg_circle-"
arrowImgUrl="/assets/arrow.png"
chunkRange={{ start: 2, end: 6 }}
winNumber={winNumber}
drivingType="async"
buttonStyle={
<>
<button onClick={clickButton}>hello</button>
</>
}
></Roulette>
//์ง์ ๊ฐ์ ์ ์ธ
<Roulette
imgUrl="/assets/bg_circle-"
arrowImgUrl="/assets/arrow.png"
chunkRange={{ start: 2, end: 6 }}
winNumber={2}
chunk={4}
arrowPosition="left"
buttonShape="squre"
></Roulette>
//๋๋ค๊ฐ
<Roulette
imgUrl="/assets/bg_circle-"
arrowImgUrl="/assets/arrow.png"
chunkRange={{ start: 2, end: 6 }}
chunk={6}
arrowPosition="right"
></Roulette>
);