admin 管理员组文章数量: 1086019
EDIT**
In my word game there is a grid with 3 letter words.
The aim of the game is to spell the words by clicking on the corresponding letters on the side.
When an area in the grid is highlighted it indicates to the user the word to spell. The user clicks the letters on the side of the grid and they move to the highlighted area.
At the moment I have the styles to show if the individual letters are correct, but when a word is pleted I need it to recognize this so I can apply the styles to it.
Can someone show me some code that recognizes the correct and wrong words?
When it was a drag and drop game I did it like this...
if (guesses[word].length == 3) {
if (guesses[word].join('') == word) {
$('td[data-word=' + word + ']').addClass('wordglow2');
} else {
$('td[data-word=' + word + ']').addClass("wordglow4");
target.splice(0, guesses[word].length);
}
});
Here is the code for the click to animate function...
if (target.length) {
$(".minibutton").prop("disabled", true);
b.clone().addClass(
b.data("letter") == target.data("letter") ? "wordglow3" : "wordglow").appendTo("table").css({
background: "transparent",
position: "absolute",
top: currentPos.top,
left: currentPos.left
}).animate({
top: targetPos.top,
left: targetPos.left
}, "slow", function() {
$(this).css({
top: 0,
left: 0
}).appendTo(target);
target.addClass("occupied");
});
}
I have tried this...
if (target.length == 3) {
if (target.join('') == word) {
$(this).addClass('wordglow2');
} else {
$('td[data-word=' + word + ']').addClass("wordglow4");
guesses[word].splice(0, guesses[word].length);
}
});
and this...
if $(('.wordglow3').length == 3) {
$('td[data-word=' + word + ']').addClass('wordglow2');
} else if $(('.wordglow').length == 3) {
$('td[data-word=' + word + ']').addClass("wordglow4");
guesses[word].splice(0, guesses[word].length);
}
});
Thanks!
If it helps, here is a fiddle /
EDIT**
In my word game there is a grid with 3 letter words.
The aim of the game is to spell the words by clicking on the corresponding letters on the side.
When an area in the grid is highlighted it indicates to the user the word to spell. The user clicks the letters on the side of the grid and they move to the highlighted area.
At the moment I have the styles to show if the individual letters are correct, but when a word is pleted I need it to recognize this so I can apply the styles to it.
Can someone show me some code that recognizes the correct and wrong words?
When it was a drag and drop game I did it like this...
if (guesses[word].length == 3) {
if (guesses[word].join('') == word) {
$('td[data-word=' + word + ']').addClass('wordglow2');
} else {
$('td[data-word=' + word + ']').addClass("wordglow4");
target.splice(0, guesses[word].length);
}
});
Here is the code for the click to animate function...
if (target.length) {
$(".minibutton").prop("disabled", true);
b.clone().addClass(
b.data("letter") == target.data("letter") ? "wordglow3" : "wordglow").appendTo("table").css({
background: "transparent",
position: "absolute",
top: currentPos.top,
left: currentPos.left
}).animate({
top: targetPos.top,
left: targetPos.left
}, "slow", function() {
$(this).css({
top: 0,
left: 0
}).appendTo(target);
target.addClass("occupied");
});
}
I have tried this...
if (target.length == 3) {
if (target.join('') == word) {
$(this).addClass('wordglow2');
} else {
$('td[data-word=' + word + ']').addClass("wordglow4");
guesses[word].splice(0, guesses[word].length);
}
});
and this...
if $(('.wordglow3').length == 3) {
$('td[data-word=' + word + ']').addClass('wordglow2');
} else if $(('.wordglow').length == 3) {
$('td[data-word=' + word + ']').addClass("wordglow4");
guesses[word].splice(0, guesses[word].length);
}
});
Thanks!
If it helps, here is a fiddle http://jsfiddle/smilburn/3qaGK/9/
Share Improve this question edited Aug 17, 2012 at 9:01 sMilbz asked Aug 13, 2012 at 7:49 sMilbzsMilbz 9511 gold badge7 silver badges25 bronze badges2 Answers
Reset to default 10 +50Why not using a draggable/droppable element with an accept/revert setting, since you are using jQuery UI already?
Here is a theoretical way to acplish an accept/revert drag & drop:
First you need to set your draggable to revert if it is not accepted:
$(".drag").draggable({ revert: 'invalid' });
Then of course you need to define what is valid in your droppable :
$(".drop").droppable({ accept: '.drag' });
Either you try using a selector to filter the right answers, by setting a class for each letter (.addClass("b");)
and later change dynamically this selector with .droppable("option","accept",".b")
.
Or use the magic powder included in jQuery UI. You can insert a function as a value for "accept"
, it's returned value will define what you accept as a valid element:
$(".drop").droppable(
{
accept: function()
{
// add a conditon here to return true or false
}
});
Edit
To do the same with your click event :
$('.drag').on('click', function(e)
{
e.preventDefault();
var target = $('.drop-box.spellword:not(.occupied):first');
var targetPos = target.position();
var currentPos = $(this).offset();
var b = $(this);
if(target.length)
{
// pare clicked letter with expected letter
if(b.attr("data-letter") == target.attr("data-letter"))
{
b.remove().appendTo('table').css({
'position' : 'absolute',
'top' : currentPos.top,
'left': currentPos.left
});
b.animate({
top : targetPos.top,
left : targetPos.left
}, 'slow', function() {
b.remove().css({ top: 0, left: 0 }).appendTo(target);
target.addClass('occupied');
});
}
}
});
If I understand the question, you are looking for a way to check the validity of a word that is created by selecting letters, and then applying styles to the word.
Heres what I would do:
var dict = []; // Create an array with all of the possible words
var word = "";
function createWord(){ // Creates the variable word to be checked against array
var addToWord = $(this).html(); // Sets the variable addTo Word to the letter selected
word = word + addToWord; // Adds the selected letter to the current word
};
function checkWord(){
var i = dict[].length; // Sets incrementor "i" to the length of the array
while (i){ // While "i" is a positive value
if (word == dict[i]){ // Checks if the word is equal to the word in that spot of the array
// If it is, apply the correct styles
}
else{ // If it isn't,
// Do Nothing
}
i = i--; // Decrease i by one, and repeat until the whole array has been checked
}
};
$('foo bar').click(function(){
createWord();
checkWord();
}
Good Luck! Hope this helps.
-Brian
本文标签: javascriptAccepting the animationStack Overflow
版权声明:本文标题:javascript - Accepting the animation - Stack Overflow 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://roclinux.cn/p/1744070633a2528418.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论