Ιούν
05
2009
Τα πρώτα βήματα στον προγραμματισμό σε Action Script
Το πρόγραμμα που χρησιμοποιώ για την δημιουργία των προσομοιώσεων είναι το Flash της Adobe.

Η φιλοσοφία του προγράμματος είναι να δημιουργεί εικόνες (frames) και να τις προβάλλει με έναν ρυθμό (fps - frames per second). Η μεγάλη του ισχύς όμως είναι στην γλώσσα προγραμματισμού που υποστηρίζει. Εγώ χρησιμοποιώ την Action Script 2 (υπάρχει και νεώτερη).

Η κύρια εικόνα που αντικρίζει κανείς όταν ξεκινάει είναι ένα λευκό παράθυρο stage. Εκεί δημιουργούμε ένα σχήμα πχ έναν κύκλο και το μετατρέπουμε σε σύμβολο (δεξί κλικ στο σχήμα και convert to symbol). Το επόμενο βήμα είναι να του δώσουμε ένα όνομα για να μπορούμε να αναφερόμαστε σε αυτό το αντικείμενο στον προγραμματισμό πχ ball_mc. Κάνουμε κλικ σε ένα σημείο εκτός της μπάλας και πηγαίνουμε στο παράθυρο Actions - Frame και πληκτρολογούμε τον παρακάτω απλό κώδικα

var t:Number =0;

onEnterFrame=function() {

  ball_mc._x=260+50*Math.sin(t);

  t+=0.1;

};

αφού τελειώσουμε την πληκτρολόγηση πιέζουμε τα πλήκτρα ctrl+enter για να δοκιμάσουμε την ταινία μας.

Ας εξηγήσουμε γραμμή - γραμμή τον κώδικα

Στην πρώτη γραμμή δηλώνουμε ότι η μεταβλητή t (χρόνος) είναι ένας αριθμός και σαν αρχική τιμή είναι μηδέν.

Στην δεύτερη γραμμή onEnterFrame=function() λέμε στο Flash να εκτελεί ότι βρίσκεται μέσα στα άγκιστρα { } κάθε φορά που θα μπαίνει σε αυτό το καρέ. Επειδή έχουμε ένα καρέ όλο και όλο στην ταινία μας το flash στην ουσία εκτελεί συνέχεια αυτόν τον κώδικα με ρυθμό που του έχουμε καθορίσει (τα λεγόμενα fps) (Η προεπιλεγμένη τιμή για τις ανάγκες μας δημιουργεί όχι και τόσο ομαλή κίνηση εγώ χρησιμοποιώ συνήθως 60fps)

Η εντολή ball_mc._x είναι η συντεταγμένη του σώματος ball_mc σε μονάδες pixels με αρχή του συστήματος αναφοράς την πάνω αριστερή γωνία του παραθύρου.

Η εντολή Math.sin(t) είναι το ημ(t)

H τρίτη γραμμή περιγράφει την θέση της μπάλας. Η οποία εκτελεί απλή αρμονική ταλάντωση με κυκλική συχνότητα 1 και η θέση ισορροπίας βρίσκεται στο X=260;

H εντολή t+=0.1 είναι συντομογραφία της t=t+0.1 δηλαδή κάθε φορά που θα την εκτελεί θα αυξάνει τον χρόνο κατά 0.1.

Μόλις το flash συναντά το } εκτελείτε ξανά ο βρόγχος κ.ο.κ.

Ακολουθούν μερικά παραδείγματα.

Μια ομαλή κυκλική κίνηση.

var t:Number =0;
onEnterFrame=function() {
  ball_mc._x=260+50*Math.sin(t);
  ball_mc._y=260+50*Math.cos(t);
  t+=0.1;
};

το παραπάνω παραμετροποιημένο

var t:Number =0;
var A:Number =1;
var w:Number =1;
var Scale:Number =50;
var X0:Number =260;
var Y0:Number =200;
var dt:Number =0.1;

onEnterFrame=function() {
  ball_mc._x=X0+Scale*A*Math.sin(w*t);
  ball_mc._y=Y0+Scale*A*Math.cos(w*t);
  t+=dt;
};

Ένα διακρότημα

var t:Number =0;
var A:Number =1;
var w1:Number =1;
var w2:Number =1.1;
var Scale:Number =50;
var X0:Number =260;
var dt:Number =0.1;

onEnterFrame=function() {
  ball_mc._x=X0+Scale*A*(Math.sin(w1*t)+Math.sin(w2*t));
  t+=dt;
};

Μια επιταχυνόμενη κίνηση

var t:Number =0;
var v:Number=5;
var dx:Number=0;
var a:Number=2;
var Scale:Number =50;
var X0:Number =260;
var dt:Number =0.1;

onEnterFrame=function() {
  t+=dt;
  dx=v*dt+a*dt*dt/2;
  v+=a*dt;
  ball_mc._x+=dx;
}


Τα παραπάνω παραδείγματα μαζί με άλλα δύο μπορείτε να τα κατεβάσετε κάνοντας κλικ στο κουμπί "Τα Παραδείγματα σε FLA".

Τελευταία ανανέωση ( 30.01.19 )