March 06, 2006

"ו"חפש את חברייך Key.isDown

מתודה חמודה הייתה לאובייקט Key ז"ל: isDown קראו לה, ובעזרתה יכולת לדעת איזה מקש נלחץ.
אדובה החליטו להעיף אותה ואת האובייקט Key לכל הרוחות. הם אומרים שזה מסיבות של security ואנחנו נאלץ להאמין להם, גם אם היו אומרים שזה מהסיבה של שנת-התמסח בטימבאקטו.
הסיבה ל- isDown היא בעיקר בניטור אחרי הקלדות של המשתמש למשחקים בעזרת אינטרוואלים בכדי ליצור אפקט מתמשך וזורם של תנועה, בניגוד לאפקט המתקבל מ-events.
מה שכן, לאחר שעשו את מה שעשו, שכחו לחסות. אתם מבינים, אין ממש תחליף למתודה שעפה משם. אדובה סומכים על העובדה שיש events חדשים למחלקה החדשה שלהם Keyboard עושים את העבודה, כך שאין צורך במתודה שתהיה הבשורה החדשה עבור isDown.
אז זהו... ששוב, לא!
מחיפושים בפורומים ומה לא נראה כי אין ממש workaround יעיל לחסרון של isDown. בהחלט משובב נפש ומרנין חיוך.
אני עדיין בחיפושים, לא קדחתניים, אבל עדיין.
אם למישהו יש רעיון, אשמח לשמוע.

6 comments:

gadi said...

מה עם הדבר הבא:

myTextField.addEventListener("keyDown", keyDownHandler);

ובפונקציה keyDownHandler

private function keyDownHandler(event:KeyboardEvent):void {
trace("clicked: " + event.charCode);
}

הבעיה היחידה כאן היא ניטור מקלדת לא באנגלית מכיוון שה-charCode שחוזר הוא רק על מקלדת אנגלית (גם ה-ascii).

FlashMattic said...

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

gadi said...

מה עם תתחיל אינטרבל עצמאי מרגע הלחיצה ("keyDown") ותפסיק אותו ברגע סיום הלחיצה ("keyUp") ולא תיתן את התנועה בתוך ה-event עצמו.

FlashMattic said...

ואלכסון?
יביא אסון?
:)

guya said...

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

דרך אגב, אחלה בלוג (:

FlashMattic said...

אהלן,
נכון, יש מצב שזה "יתוקן" כש-Blaze תצא. זהו אכן צורך די הכרחי ויכול להיות שרק בגלל שפלקס לא אמורה להיות פלטפורמה לפיתוח משחקים הם הרגישו בנוח להשמיט את הפיצ'ר הזה.
במחשבה שניה, הם מרגישים נוח עם העובדה שאין RTL בפלאש, אז אי אפשר לדעת...
תודה על הפידבק :)