כמתכנת אפליקציות חשבתי לקחת את ראשי הפרקים ולתמצת אותם לגורמים שנמצאים בכל שפה באשר היא
במידה ואציג דוגמאות אשתמש בשפת פסקל
אבל העקרונות שווים בכל השפות
ActionScript Overview
כל סקריפט בניגוד לאפליקציות נצרכות לפלטפורמה בהם הו יורצו
שפות הסקריפטים משתמשים לרוב באחת השפות הבאות
ג'אווה
בייסיק (VBasic)
C (Perl)
פייטון
PHP
סקריפט הוא בעצם שפה שמורה לתוכנה נתונה איך להתנהג
סקריפט יכולה להיות ג'נרית יותר (כמו דוטנט)
או יעודית לסביבה העבודה
What Is ActionScript 3.0
זה נוגע לפלאש עצמו
The Flash Platform
זה כבר יסביר ארז ליברמן
הסביבה שבה מורצת הסקריפט
כל סביבה מספקת את העצמים שנוגעים לתסגנון וסביבת התוכנה
Procedural Versus Object-Oriented Programming
בתקופת הדוס התוכנות היו פרוצדורליות או בקצרה הרצה לינארית של קוד מכונה
בניגוד לתיכנות מונחה עצמים שהוא הרצה מקבילית של קוד
לדוגמא
בדוס אם היינו מעלים תפריט היינו מחכים לקבל את הקלט של בחירת המשתמש ורק אז התוכנה המשיכה במרוצתה
Procedure ShowMenu (MenuItems,AmountOfItems,...Choice)
Var
Ch : Char;
Begin
הקוד שמראה את התפריט..
Ch := ReadKey
Case Ch Of
1 : ....;
2 :.....;
וכו'
End;
End;
בזמן שהתוכנה מחכה לקלט של בחירת אופציה של התפריט היא אינה זמינה לשום דבר אחר מלבדה
בחלונות 3.11 התחיל עידן של תכנות מונחה עצמים (מדומה(
אם כן מהו תכנות מונחה עצמים?
תחשבו על עצם כאל בן אדם
לבן אדם יש מאפיינים ידיים,רגליים
וגם יש לו מוח שמכיל את כל הידע איך להשתמש באיברים אלו
אם אמרתי לבן שלי "משה תביא לי את הצלחת מהכיור"
הרי שהוא יודע איפה הכיור
הוא יודע מהו צלחת
והוא יודע שהוא צריך להשתמש ברגליים להגיע לכיור ובידיים לקחת את הצלחת
אני לא צריך לפרט לו איך לבצע כל פעולה
ניקח לדוגמה אובייקט פשוט כמו כפתור
לאובייקט יש מאפיינים כמו
הטקסט בכפתור
המיקום
אורך ורוחב ועוד
כמו כן לאובייקט יש פקודות אירוע כמו
OnClick : TNotifyEvent;
כאשר מתבצע אירוע כגון לחיצה על הכפתור פרוצדורה מסויימת מתבצעת
איך זה עובד???
רכיבים וויזואלים לרוב יכולים לקבל מיקוד או חצי מיקוד
חצי מיקוד הכוונה כאשר העכבר עובר עליהם או יוצא מהם
מיקוד הכוונה כאשר המשתמש בחר אובייקט מסויים ע"י קליק שמאלי בעכבר
כל מיקוד
Focus בלע"ז
הוא בעצם סוג מסויים של יידוע למערכת ההפעלה
יידוע=TNotifyEvent
כמובן שבמקרה של רכיב שמקבל מיקוד יהיה לו מאפיין בוליאני של אמת או שקר האם האובייקט נבחר או לא
If Button1.Focused Then Button1.BringToFront;
כמובן שלא כל מחלקה חייבת לקבל מיקוד כמו פנל וגם לא כל מחלקה הוא בכלל וויז'ואלי כמו רכיב שמכיל כמה אייקונים שהתוכנה משתמשת
התוכנה מורצת בצורה מקבילית, הווי אומר שבלחיצה על כל פקד קטע אחר של קוד מורץ
כל רכיב או פקד הוא בעצם סוג של מחלקה
מחלקה=Class
יש להבדיל בין מונחה עצמים לריבוי תהליכים
תהליך=Thread
אם כן עצם הוא קפסולה שמכילה את כל הנצרך עבור פעולת המחלקה
The Document Class
יסביר מר ליברמן
Legacy Code
יסביר מר ליברמן
Core Language Fundamentals
יסביר מר ליברמן בהתאם לסוג השפה
Variables and Data Types
Variable=משתנה פשוט
Data Types=סוג מורכב
כאשר אנו אומרים משתנים הכוונה למשתנים פשוטים הנה העיקריים שיש בכל שפה
Boolean = אמת או שקר
Char = משתנה של תו
String = מחרוזת תווים
Byte = משתנה בעלת 8 סיביות שיכולה להכיל ערך בין 0 ל255
ShortInt = משתנה בעלת 8 סיביות שיכולה להכיל ערכים בין -127 ל+127
Word=משתנה בעל 16 סיביות שיכולה להכיל ערך בין 0 ל35635
LongWord או DoubleWord = משתנה בעל 32 סיביות שיכולה להכיל ערכים בין 0 ל בערך 4 מיליארד
Integer = משתנה שיכול להכיל ערך בערך של מינוס שתי מיליון לפלוס שתי מליון
Double,Single,Float,Real,Extended,Currency = שמות של משתנים שיכולים להכיל ערכים עם נקודה עשרונית בניגוד לקודמים שיכולים להכיל ערכים שלמים בלבד
משתנים מורכבים:
כעת שהכרנו בתימצות משתנים פשוטים ניתן להגדיר משתנים מורכבים
לדוגמה סוג של נתונוים של לקוח
TYPE
TClient = Record
Zehut,FirstName,LastName,Adress : String;
IsClient : Boolean;
Debit,Credit : Double;
CRC : LongInt;
End;
כעת ניתן להגדיר את הסוג המורכב כמשתנה
Var
Client : TClient;
בגוף הפרוצדורה הוא יוכר משהו כזה
Client.Zehut := '087564245';
Client.IsClient := False;
או לחילופין
With Client Do
Begin
Zehut := '087564245';
IsClient := False;
End;
Conditionals=התניות
התניות הינם בדיקת טענה האם היא אמיתית או שיקרית
If IsClient = True Then.... Else...
או
If Debit > Credit Then... Else If Debit=Credit Then... Else....
הפשטה של ההתניות מבוצעות ברוב השפות עם Case
Case Credit Of
0..1000 : DoX;
1001..10000 : DoY;
10000..100000000 : DoZ;
End; // Case
התניית קייס חייבת לקבל התניות מוגדרות ולא גדול מ... או קטן מ...
Loops
ארבע סוגים של לולאות הן
For,While,Repeat,Goto
For:
לרוב לולאה שתתבצע מספר מסויים של פעמים
For X := 1 To 1000 Do Memo1.Lines.Add (IntToStr(X));
בשפות מסויימות ניתן להגדיר לולאה עם צעדים
For X := 1 To 1000 Step 3 Do...
מה שיקרה הוא שבסיבוב הראשון המשתנה יכול 1
בסיבוב השני 4 בסיבוב השלישי 7
While
לולאה שמתבצעת אך ורק אם תנאי מסויים אמיתית או שיקרית והיא יכולה שלא להתבצע בכלל כגון
While Length(S) < 10 Do S := #32 + S;
בעברית
כל עוד שאורך המחרוזת קטנה מ10 החדר תו רווח
במידה והמחרוזת כבר מכילה 10 תווים או יותר היא לעולם לא תתבצע
Repeat:
מחרוזת שחייבת להתבצע לפחות פעם אחת
Goto:
עומד נגד כל עקרונות התכנות הפרוצדוראליות אבל היא נצרכת במקרים מסויימים
טעויות נפוצות בלולאות
1. לולאות שאינם מסתיימות לעולם
2. לולאות שלא אותחלו המשתנים לפני הביצוע
3. בתוך לולאות חלונות נתקע לכן חשוב לתת פקודה בסגנון
Application.ProcessMesages
Arrays = מערכים
מערך הוא משתנה אשר מכילה יותר מאיבר אחד
ShortString : Array[0..255] Of Char;
shortstring = מערך של 256 תווים
מערכים יכולים להיות חד-מימדי, דומימדי ויותר
BArray : Array [1..100] of byte of Array[1..100] of byte;
גרידים לרוב משתמשים במערכים דו מימדיים
ישנם גם מערכים דינאמיים שמספר האיברים אינם מוגדרים מראש
Barray : Array Of Byte;
במהלך הקוד נגדיר את מספר האיברים לפי הצורך
מערך כזה הואיל והוא אינו משתנה סטאטי, שיוך הזכרון מתבצעת בזמן ההרצה
במקרים אלו יש צורך בבדיקת כמות הזיכרון הזמינה
כמובן שאם הגדרנו בזמן ההרצה 1000 איברים כנראה שהכל יהיה בסדר
אבל אם הגדרנו בזמן ההרצה כמה טריליונים של איברים ואין מספיק זיכרון התוכנה תקרוס
Functions
פונקציות הם כמו פרוצדורות רק עם ההבדל הקטן שהם מחזירים ערך
Function Precent (Value : Double) : Double;
Begin
Result := Value / 100;
End;
Maam := Precent (200) * 16;
המשתנה של מע"מ יכיל במקרה הזה 32
Custom Objects
this = משתנה מסוג מצביע אל האובייקט שהופעל
משתנים דינאמיים הם קצת יותר מסובכים להבנה תראו בהמשך
Absolute versus Relative Addresses
כמובן שמצביעים אל מרחבי הזיכרון של המחשב מערכת ההפעלה אינה שמחה איתם
ברעיון
אם אמרתי גש אל כתובת החיד"א 4 זהו מצביע לכתובת מוחלטת
(Absolute)
אבל אם אמרתי גש לכתובת החיד"א 4 + 10 זהו מצביע אל כתובת יחסי
(Hist)
רוב המצביעים לרוב הינם יחסיים
אולם במקרים מסויימים כמו בשינוי סוג המשתנה
(TypeCasting)
נשתמש בצביעים מוחלטים
A : Byte;
B : Char Absolute A;
Begin
A := 67;
Memo1.Lines.Add(B);
End;
המשתנה
B
יכיל את התו
C
הואיל וערך האסקי שלו הוא 67
Properties, Methods, and Events
מאפיינים,מתודות ואירועים
Inherited Attributes
כאשר למחלקה מסויימת יש אב מסויים היא יכולה לרשת מאפיינים ממחלקת האב ללא קוד מיותר
אבל את זה נשאיר לשלבים מאוחרים יותר
Properties
כבר הסברנו
Events
כבר הסברנו
Methods
בואו נאמר שמתודה היא מילה נרדפת לפרוצדורות ופונקציות
Event Propagation
Frame and Timer Events
זהו
עד כאן התמצות
כעת תגידו
כל זה משבילכם????
אם כן רוצו לרב' ליברמן
Removing Event Listeners
The Display List
The Sum of Its Parts
Adding and Removing Children
Managing Object Names, Positions, and Data Types
Changing the Display List Hierarchy
A Dynamic Navigation Bar
Timeline Control
Playhead Movement
Frame Labels
Frame Rate
A Simple Site or Application Structure
OOP
Classes
Inheritance
Composition
Encapsulation
Polymorphism
Navigation Bar Revisited
Motion
Basic Movement
Geometry and Trigonometry
Physics
Programmatic Tweening
Timeline Animation Recreations
Particle Systems
Drawing with Vectors
The Graphics Class
The Geometry Package
The Motion Package
9-Slice Scaling
Applied Examples
Drawing with Pixels.
Bitmap Caching
The BitmapData Class
Blend Modes
Bitmap Filters
Color Effects
Image Encoding and Saving
Loading Assets
Loading Sound and Video
Loading Text
Loading Display Objects
Communicating Across ActionScript Virtual Machines
Taking a Brief Look at Security
XML and E4X.
Understanding XML Structure
Creating an XML Object
Reading XML
Writing XML
Deleting XML Elements
Loading External XML Documents
Communicating with XML Servers
An XML-Based Navigation System
Programming Design and Resources
Programming Design and Resources
Programming Design Methodologies
Object-Oriented Design Patterns