לוגו אתר Fresh          
 
 
  אפשרות תפריט  ראשי     אפשרות תפריט  צ'אט     אפשרות תפריט  מבזקים     אפשרות תפריט  צור קשר     חץ שמאלה ‎print ‎"Hello World!"; if‎ ‎not rules.‎know ‎then rules.‎read(); חץ ימינה  

לך אחורה   לובי הפורומים > מחשבים > תכנות ובניית אתרים
שמור לעצמך קישור לדף זה באתרי שמירת קישורים חברתיים
תגובה
 
כלי אשכול חפש באשכול זה



  #6  
ישן 22-05-2011, 00:16
צלמית המשתמש של בן אור
  בן אור בן אור אינו מחובר  
 
חבר מתאריך: 24.02.05
הודעות: 17,595
שלח הודעה דרך ICQ אל בן אור שלח הודעה דרך MSN אל בן אור Facebook profile Follow me...
בתגובה להודעה מספר 1 שנכתבה על ידי not_here שמתחילה ב "הדבקה והחלפה"

קודם כל אתה יכול להגדיר את אותו קוד לכל הריבועים שלך שאותה צורה כך שאין צורך להכפיל את הקוד, שים לב בעיקר לשורה השניה שבה מגדירים את square ולשורה השלישית שבה אני מוסיף לו את פונקציית הלחיצה
קוד PHP:
 for (var i:Number 03; ++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; (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 03; ++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.
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #8  
ישן 04-06-2011, 11:46
  not_here not_here אינו מחובר  
 
חבר מתאריך: 17.05.11
הודעות: 8
עוד שאלה בבקשה....
בתגובה להודעה מספר 6 שנכתבה על ידי בן אור שמתחילה ב "קודם כל אתה יכול להגדיר את..."

שלום

זה נראה לי פשוט אבל אני מסתבכת עם זה שוב ושוב וזה לא מצליח לי ...

יש 10 מוביקליפים (A1 עד A10),
ויש 8 מוביקליפים (C1 עד C8) שהגולש אמור לגרור אותם ולהדביק אותם אל המוביקליפים A.


איך עושים שאם המוביקליפים C1 עד C4 מודבקים למוביקליפ Ai כלשהו (כאשר i בין 1 ל - 10)
אז אחד המשתנים SUM1 עד SUM 10 בהתאמה מקבל את הערך 2,
ואם המוביקליפים C5 עד C8 מודבקים למוביקליפ Ai כלשהו (כאשר i בין 1 ל - 10)
אז אחד המשתנים SUM1 עד SUM 10 בהתאמה מקבל את הערך 1,
ושני המוביקליפים A שאף מוביקליפ C לא מודבק אליהם מקבלים את הערך 0.

ניסתי לעשות שתי לולאות FOR אחרי ההדבקה שיבדקו hitTest ואז לתת את הערך של SUMi אבל זה לא מצליח לי.




for (var i:Number = 1; i < 5; ++i) {


var C = _root["C" + i];
for (var j:Number = 1; (j < 11); ++j) {
var SUM = _root["SUM" + j];
var A = _root["A" + j];
if (A.hitTest(C)) {
_root["SUM" + j] = 2;
}else{_root["SUM" + j] = 0;
}
}
}
for (var i:Number = 5; i < 9; ++i) {
var C = _root["C" + i];
for (var j:Number = 1; (j < 11); ++j) {
var SUM = _root["SUM" + j];
var A = _root["A" + j];
if (A.hitTest(C)) {
_root["SUM" + j] = 1;
}else{_root["SUM" + j] = 0;
}
}
}







מצורף קובץ FLA (פלאש 8)

https://2011-uploaded.fresh.co.il/2...04/93656011.fla
תודה מראש
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

כלי אשכול חפש באשכול זה
חפש באשכול זה:

חיפוש מתקדם
מצבי תצוגה דרג אשכול זה
דרג אשכול זה:

מזער את תיבת המידע אפשרויות משלוח הודעות
אתה לא יכול לפתוח אשכולות חדשים
אתה לא יכול להגיב לאשכולות
אתה לא יכול לצרף קבצים
אתה לא יכול לערוך את ההודעות שלך

קוד vB פעיל
קוד [IMG] פעיל
קוד HTML כבוי
מעבר לפורום



כל הזמנים המוצגים בדף זה הם לפי איזור זמן GMT +2. השעה כעת היא 23:34

הדף נוצר ב 0.09 שניות עם 10 שאילתות

הפורום מבוסס על vBulletin, גירסא 3.0.6
כל הזכויות לתוכנת הפורומים שמורות © 2024 - 2000 לחברת Jelsoft Enterprises.
כל הזכויות שמורות ל Fresh.co.il ©

צור קשר | תקנון האתר