create.js 라이브러리로 HTML5 캔버스와 자바 스크립트가있는 카드 게임을하고 있습니다. 내가 가진 문제는 플레이어의 손에서 클릭 한 카드를 삭제하는 onclick 함수가 있다는 것입니다 (스플 라이스가있는 배열에서 객체를 제거한 다음 캔버스에 다시 그리거나 캔버스에 삭제 된 카드가없는 플레이어의 카드 배열을 다시 그립니다). 내가 처음이 일을 할 때 그것은 잘합니다.하지만 배열의 (예를 들어 splice 메서드 뒤에) 인덱스 1에 있어야하는 카드를 다시 클릭하면 작동하지 않습니다. 이 코드에서Html5/javascript/easeljs 게임 프로젝트. 코드가 많이 있습니다. 나가는 것이 필요합니다.
봐 : 여기
function Player()
{
this.playerTurn = false;
this.id = this;
this.name = this;
this.score = this;
this.playerHand = new Array();
this.playerTakenCards = new Array();
this.playerPickCard = function(n)
{
var card = this.playerHand(n);
return card;
}
this.tempArray = this;}
내 init 함수입니다 : 여기
function Card(suit,rank,imageFrontUrl,imageBackUrl)
{
this.imageFront = new createjs.Bitmap(imageFrontUrl);
this.imageBack = new createjs.Bitmap(imageBackUrl);
this.suit = suit;
this.rank = rank;
}
function Deck(){
this.cards = new Array();
this.makeDeck = function()
{
this.cards[0]= new Card("clubs",1,"images/114.png","images/155.png");
this.cards[1]= new Card("clubs",2,"images/115.png","images/155.png");
this.cards[2]= new Card("clubs",3,"images/116.png","images/155.png");
this.cards[3]= new Card("clubs",4,"images/117.png","images/155.png");
this.cards[4]= new Card("clubs",5,"images/118.png","images/155.png");
this.cards[5]= new Card("clubs",6,"images/119.png","images/155.png");
...
}
this.shuffleDeck = function()
{
var j,k;
for (j = 0; j < this.cards.length; j++) {
k = Math.floor(Math.random() * this.cards.length);
temp = this.cards[j];
this.cards[j] = this.cards[k];
this.cards[k] = temp;
}
}
this.dealCardsPlayer = function()
{
var playerDeck = new Array();
for(var i = 0; i<6;i++)
{
var x = this.cards.pop();
playerDeck.push(x);
}
return playerDeck;
}
}
클래스 선수에 대한 내 코드입니다 : 여기
클래스 카드에 대한 내 코드입니다
function init(){
var canvas = document.getElementById("tutorialCanvas");
var stage = new createjs.Stage(canvas);
var deck = new Deck();
var player1 = new Player();
deck.makeDeck();
deck.shuffleDeck();
player1.playerHand = deck.dealCardsPlayer();
function drawPlayerCards(){
var rotation=280;
for(var i =0;i<player1.playerHand.length;i++)
{
player1.playerHand[i].imageFront.x=330;
player1.playerHand[i].imageFront.y=750;
player1.playerHand[i].imageFront.regX = 0;
player1.playerHand[i].imageFront.regY = 96;
player1.playerHand[i].imageFront.rotation = rotation;
rotation = player1.playerHand[i].imageFront.rotation+20;
stage.addChild(player1.playerHand[i].imageFront);
}
}
createjs.Ticker.addEventListener("tick", stage);}
나는이 기능은 단지 첫 번째 비트 맵 player1.playerHand [1] .imageFront 위해 일하는 것을 깨달았다 일부 연구 후
player1.playerHand[1].imageFront.addEventListener('click',function(event)
{
stage.removeAllChildren();
player1.playerHand.splice(1,1);
drawTableDeck();
drawPlayerCards();
}
: 전자 내가 함께 문제가있는 기능입니다. 첫 번째 onclick 이벤트로 배열을 변경 한 후 해당 player1.playerHand [1] .imageFront가 다른 이미지/비트 맵인 경우에는 작동하지 않습니다. 도와주세요!
감사합니다 바트, 당신의 대답은 내 문제를 해결했습니다. 도와 줘서 고마워. – user3198246