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

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



  #24  
ישן 09-08-2006, 01:22
  freak2100 freak2100 אינו מחובר  
 
חבר מתאריך: 28.06.06
הודעות: 102
בתגובה להודעה מספר 23 שנכתבה על ידי -FoxyBrain- שמתחילה ב "הוא לא ישאר בזיכרון, אתה מאתחל אותו..."

נכון, אבל מאז השאלה הפכה לשאלה אחרת...
מה שאתה אומר לא הגיוני - במקום ליצור bitmap אחד קצת יותר גדול ממה שאני צריך אני אצור כמה bitmapים בכל שנייה, קצת יותר קטנים, זה נשמע לך כמו משהו חסכוני? לי לא...

ניסיתי לכתוב הסבר למה שאני מנסה לעשות והסתבכתי. ולצערי, אני לא יכול בשלב הזה להעלות את מה שאני עובד עליו...

אבל בלי להסביר את המטרה הסופית, אני אסביר מה אני רוצה בצורה טכנית
יש לי MCים שנוצרים דינמית (24 פעמים בשנייה, זה משחק), והם לא מלבניים, והם משמשים אותי כעצמים גרפיים. עכשיו, אני רוצה שMC שעובר מעליהם יראה רק כשהוא עליהם, ואם נניח רק חצי ממנו עליהם אז שרק החצי הזה יראה. או במילים אחרות, אני רוצה ליצור MASK זהה לMCים האלה.
עכשיו, הכנסתי את כל הMCים האלה שנוצרים דינמית לMC אחד. אני לא יכול לשכפל אותו עם duplicateMovieClip, שזה מה שניסיתי בהתחלה, כי הפקודה הזאת לא משכפלת גם MCים פנימיים שנוצרו דינמית. וגם אם אני יוצר עוד MC דומה, מה שגורם לי לבזבז משאבי מערכת, הוא לא מתפקד טוב כMASK (משהו נורא מוזר... כאילו אם יש עצמים [שאני מצייר עם הפקודות ציור של AS] שעולים אחד על השני, אז השטח שבו הם נחתכים לא נכלל בMASK. אבל זה אפילו לא זה, כי יש עצמים שבהם זה כן קורה ויש עצמים שבהם זה לא קורה...).
אז מה שחשבתי זה לשכפל את הMC הזה, שנוצר דינמית והוא לא מלבן(!!), עם bitmapData, ואז את הbitmapData לעשות MASK. אבל זה לא יוצא טוב, כי הbitmapData יוצר לי אובייקט מלבני עם פיקסלים שקופים שנכללים בשטח של הMASK, ובעצם לא נותן לי שום תועלת...

עכשיו, אני די בטוח שאפשר איכשהו לסדר את זה, אני רק לא יודע איך...
כי למשל:
http://www.quasimondo.com/archives/000594.php
יש פה איזה משהו שהוא טוען תמונות ואז משתמש בהן כMASK, אבל... אני לא מבין איך זה עובד, וזה גם MASK אחר... לא כזה שנוצר עם setMask... לא כל כך ברור לי :-\

בקיצור, מה שאני צריך זה בדיוק זה שכשאני עושה setMask יכללו רק הפיקסלים הלא שקופים. אני משוכנע שיש אפשרות לעשות את זה, ואני שואל אם מישהו יודע איך...

תודה רבה על כל העזרה!
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #29  
ישן 09-08-2006, 14:14
  freak2100 freak2100 אינו מחובר  
 
חבר מתאריך: 28.06.06
הודעות: 102
בתגובה להודעה מספר 28 שנכתבה על ידי -FoxyBrain- שמתחילה ב "בפעם השלישית... אתה לא יוצר חדש, אלא מאתחל את הקיים"

ההצעה שלך הייתה:

קוד:
var blocksCopy = new BitmapData(Stage.width, Stage.height); blocksCopy.draw(_root.platforms.blocks); platforms.cansMask.attachBitmap(blocksCopy);
זה לא נראה כמו איתחול של bitmapData קיים אלא כמו יצירה של אחד חדש... אני טועה?

כי הרי מה קורה
אתה יוצר אובייקט חדש של BitmapData. התוצאה היא שנוצר בזיכרון bitmap חדש. הפונקציה שמאתחלת את האובייקט מחזירה מצביע לאובייקט שנוצר, זאת אומרת שblocksCopy הוא עכשיו מצביע לbitmap שיש בזכרון.
עכשיו אתה שוב מגדיר את blocksCopy כמצביע לאובייקט bitmapData חדש. הbitmapData הקודם לא נחמק כי לא עשית שום דבר שימחק אותו, הפקודה שמחוקת bitmapData היא dispose (תבדוק בHELP של פלאש), ואני לא רואה איפה אתה קורא לה. מצד שני אתה כן מגדיר את המשתנה שלך כמצביע לאובייקט bitmapData חדש. זאת אומרת שיותר אין לך איך להשתמש בbitmapData הקודם שלך, על אף שהוא עדיין שמור בזכרון, ומצד שני עכשיו יש לך עוד אובייקט ששמור בזכרון, זה שיצרת עכשיו.
במילים אחרות, ההצעה שלך לא מאתחלת את הbitmapData אלא יוצרת עוד ועוד bitmapData ומעמיסה על המחשב, גם כי הוא צורך משאבים בשביל ליצור את האובייקט כל פעם וגם כי הוא כל פעם מקצה עוד ועוד זיכרון לאובייקטים החדשים שלך.
אם תשתמש בdispose תחסוך בזכרון, אבל עדיין תגרום למחשב לבצע את הפקודה של האיתחול שוב ושוב.

ככה שאני עדיין לא רואה איך השיטה שלך יותר יעילה מליצור bitmap טיפה יותר גדול, מה גם שהMC שאני משכפל הוא גם ככה כמעט בגודל של הStage....
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #31  
ישן 09-08-2006, 14:51
  -FoxyBrain- -FoxyBrain- אינו מחובר  
 
חבר מתאריך: 03.09.05
הודעות: 2,857
אני לא צריך להסתכל בHELP כדי לדעת את זה
בתגובה להודעה מספר 29 שנכתבה על ידי freak2100 שמתחילה ב "ההצעה שלך..."

אני מכיר את המחלקה...
הקטע הוא שאני לא רוצה למחוק, אני רוצה לאתחל.
שאלת אז אני אומר לך - כן, אתה טועה (חוץ מזה שבטעות הגדרתי שם var, מה שיוצר אותו לוקלית לפונקציה במקום להתיחס לbitmap המוגדר. אבל מבינים את העיקרון).
זה בדיוק כמו שאתה מאתחל מערך, או אינסטנס של כל מחלקה אחרת - אין פה חידושים.
ואם כבר מדברים על יצירת אינסטנס חדש, זה בדיוק מה שאתה עושה בכל פעם שאתה יוצר Rectangle כדי למחוק את הביטמאפ - דבר תמוה בפני עצמו. כלומר, לא רק שאתה לא באמת מוחק את הביטמאפ, אתה גם יוצר עוד אינסטנס של מחלקה אחרת לחינם :|

בכל מקרה, כמו שאמרתי כבר (ואתה מסרב להקשיב), חלק קטן מהבעיה זה שהביטמאפ יותר גדול, החלק הגדול שלה הוא שאתה יוצר ביטמאפ עם אפשרות לפיקסלים שקופים.

ובכלל, אם הייתי יודע מה בדיוק אתה עושה שם הייתי בונה את הכל אחרת, כמו שאמרתי.
אין פה צורך כלל בBitmapData. אין טעם להתווכח על מה הדרך הפחות עקומה לפתור את הבעיה - עדיף למצוא דרך שהיא כלל אינה כזאת, הדיון הזה חסר טעם.
_____________________________________
תמונה שהועלתה על ידי גולש באתר ולכן אין אנו יכולים לדעת מה היא מכילה

תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
  #34  
ישן 09-08-2006, 16:19
  freak2100 freak2100 אינו מחובר  
 
חבר מתאריך: 28.06.06
הודעות: 102
בתגובה להודעה מספר 33 שנכתבה על ידי -FoxyBrain- שמתחילה ב "אממ"

ניסיתי ליצור את הMC שלי פעמיים, זה עשה לי בלאגן כשהפכתי את זה לMASK, משהו שלא כל כך הבנתי ונראה כמו באג בפלאש... יש משהו שאם יוצרים בעזרת פונקציות ציור אובייקט ועליו יוצרים עוד אובייקט בעזרת פונקציות הציור אז השטח החותך שלהם לא מתפקד כMASK? או משהו דומה?
בכל מקרה, הRectangle שלי בסך הכל משתמש אותי כדי להגיד לפלאש לצבוע את כל הbitmap בפיקסלים שקופים. עכשיו, אם לוקחים בחשבון שהbitmap שלי הוא בגודל קבוע, זאת אומרת שאני צריך גם Rectangle בגודל קבוע, אז אין לי שום סיבה ליצור אותו מחדש...

ויש משהו אחד שאני עדיין לא מבין
איך יכול להיות ש:
קוד:
myBMD = new BitmapData(...)
מאתחל bitmapData ולא יוצר אחד חדש? זה הרי משתמש בפקודה new! זה לא ברור לי...
תגובה ללא ציטוט תגובה עם ציטוט חזרה לפורום
תגובה

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

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

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

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



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

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

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

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