22-05-2011, 00:16
|
|
|
|
חבר מתאריך: 24.02.05
הודעות: 17,595
|
|
|
קודם כל אתה יכול להגדיר את אותו קוד לכל הריבועים שלך שאותה צורה כך שאין צורך להכפיל את הקוד, שים לב בעיקר לשורה השניה שבה מגדירים את square ולשורה השלישית שבה אני מוסיף לו את פונקציית הלחיצה
קוד PHP:
for (var i:Number = 0; i < 3; ++i) {
var square = _root["square" + i];
square.onPress = function() {
trace("clicked " + this._name);
this.swapDepths(_root.getNextHighestDepth());
this.startDrag();
Xposition = this._x;
Yposition = this._y;
};
}
והגדרת את האירוע שיתרחש בלחיצה על כל שלושת הריבועים (אין צורך לבדוק אם העכבר נוגע בעכבר שנלחץ, זה סתם מיותר)
פשוט תקרא לריבועים שלך square0 square1 square2
בשלב השני של שחרור
קוד PHP:
square.onRelease = function() {
trace("released " + this._name);
stopDrag();
var hitAny:Boolean = false;
for (var i:Number = 0; (i < 3) && (hitAny == false); ++i) {
var holder = _root["holder" + i];
if (holder != this) {
if (holder.hitTest(this)) {
this._x = holder._x;
this._y = holder._y;
hitAny = true;
}
}
}
if (hitAny) {//after a new location found need to move this holder to the old place
for (var i:Number = 0; i < 3; ++i) {
var square = _root["square" + i];
if (square != this) {//there isn't any need to check with it self
if (this.hitTest(square)) {//found the replacement
square._x = Xposition;
square._y = Yposition;
trace("replcaed " + this._name + " with " + square._name);
}
}
}
} else {//if didn't hit any one move him back to his source
this._x = Xposition;
this._y = Yposition;
}
};
שוב פעם מגדירים את האירוע באותה לולאה כמו קודם
דבר ראשון אני רץ על כל המחזיקים, שוב פעם נתתי להם שמות שיאפשרו לי לגשת אליהם בלולאה holder0 ומעלה
במידה ויש מגע האוביקט שכרגע נגרר (this) מקבל את המיקום שלהם ואני מגדיר את hitAny שיוציא מהלולאה ויגיד לי האם הריבוע הנגרר נכנס למחזיק אחר
ובשלב הבא אני בודק, אם hitAny (יכנס לתנאי רק עם hitAny==true) אז אפשר לחפש את מי שמחזיק את המקום כרגע, רצים עליהם (שוב פעם אין צורך לכתוב אחד אחד אלא אפשר לגשת אליהם בלולאה)
קודם כל אני בודק שהריבוע הנבדק הוא לא הריבוע הנוכחי (square != this) במידה והוא לא אפשר לבדוק התנגשות, במידה ויש התנגשות הריבוע המתנגש יקבל את המיקום הישן של הריבוע הנגרר
לבסוף במידה ו hitAny לא פגע בשהוא צריך להחזיר את הריבוע הנגרר למקום ההתחלתי שלו
והקוד גמור
יש שאלות?
https://2011-uploaded.fresh.co.il/2...22/76461030.fla
אם יש לך CS4 תוכל לפתוח את הקובץ הזה
_____________________________________
חתימתכם הוסרה כיוון שלא עמדה בחוקי האתר. לפרטים נוספים לחצו כאן. תוכלו לקבל עזרה להתאמת החתימה לחוקים בפורום חתימות וצלמיות.
נערך לאחרונה ע"י בן אור בתאריך 22-05-2011 בשעה 00:19.
|