δημιουργια movieclip + drag and drop

Λύσεις προβλημάτων για το δημοφιλές πρόγραμμα κατασκευής παρουσιάσεων στο διαδίκτυο.

Συντονιστές: WebDev Moderators, Super-Moderators

Απάντηση
vagelismember
Δημοσιεύσεις: 40
Εγγραφή: 14 Φεβ 2010 14:26

δημιουργια movieclip + drag and drop

Δημοσίευση από vagelismember » 14 Φεβ 2010 14:45

καλησπερα σας παιδια. Νεος κι εγω στην flash εχω καποιες αποριες. Αρχικα, θελω να δημιουργησω μια κλαση η οποια 8α δημιουργει ενα τετραγωνο που 8α περιεχει text. αυτο το τετραγωνο θα μπορει με drag and drop να μετακινειται. ομως το τετραγωνακι(παιδι της κλασης) θα καλειται μονο οταν κλικαρεις μεσα στο movie και θα το δημιουργει.σε καθε κλικ 8α δημιουργει και ενα καινουριο. actionscript θα ανεβασω τις επομενες μερες. απλα ηθελα να μου πειτε κι εσεις τις γνωμες σας.
ευχαριστω προκαταβολικα

Άβαταρ μέλους
HeRu
Flash Moderator
Δημοσιεύσεις: 800
Εγγραφή: 16 Αύγ 2004 10:49
Επικοινωνία:

δημιουργια movieclip + drag and drop

Δημοσίευση από HeRu » 14 Φεβ 2010 20:21

Καλώς ήρθες και καλό ξεκίνημα!!!!

Αν θέλεις να ασχοληθείς με τις classes, κάλο θα ήταν να μάθεις λίγο τις αρχές αντικειμενοστραφή προγραμματισμού. Μια συνηθισμένη διαδικασία όταν θέλεις να ασχοληθείς με πολύπλοκες classes είναι να χωρίσεις το πρόβλημα σε τρία μέρη. Το οπτικό κομμάτι(view), το διαδραστικό(control) και τα δεδομένα(model). Δηλαδή το κλασσικό MVC design pattern.

Anyway, αυτό που θέλεις εγώ θα το έκανα με δυο classes.
Μια class που θα είναι το τετράγωνο.

Κώδικας: Επιλογή όλων

package
{
	import flash.display.MovieClip;
	import flash.events.MouseEvent;
	
	public class TextDrag extends MovieClip
	{
		
		public function TextDrag(letter:String = "A"):void
		{
			label.text = letter;
			this.addEventListener(MouseEvent.MOUSE_DOWN, startMCDrag);
			this.addEventListener(MouseEvent.MOUSE_UP, stopMCDrag);
			this.addEventListener(MouseEvent.MOUSE_OUT, stopMCDrag);
		}
		
		public function startMCDrag(event:MouseEvent=null):void
		{
			this.startDrag(true);
		}
		
		private function stopMCDrag(event:MouseEvent):void
		{
			this.stopDrag();
		}
		
	}
}
Και μια class που απλά θα κάνει create τα τετράγωνα.

Κώδικας: Επιλογή όλων

package
{
	import flash.display.MovieClip;
	import flash.events.MouseEvent;
	
	public class CreateText extends MovieClip
	{
		private var target:MovieClip;
		
		public function CreateText(_target:MovieClip):void
		{
			target = _target;
			this.addEventListener(MouseEvent.MOUSE_DOWN, createText);
		}
		
		private function createText(event:MouseEvent):void
		{
			var letter:String = String("ABCDEFGHIJKLMNOPQRSTUVWXYZ").substr(Math.random()*23,1);
			var textDrag:TextDrag = new TextDrag(letter);
			target.addChild(textDrag);
			textDrag.startMCDrag();
		}
		
	}
}
Συνημμένα

textdrag.swf [ 2.78 KiB | Προβλήθηκε 3015 φορές ]

textDrag.zip
Example sources CS4
(10.17 KiB) Μεταφορτώθηκε 417 φορές

vagelismember
Δημοσιεύσεις: 40
Εγγραφή: 14 Φεβ 2010 14:26

δημιουργια movieclip + drag and drop

Δημοσίευση από vagelismember » 10 Μαρ 2010 10:49

Σ' ευχαριστώ πολυ. δεν περίμενα να απαντήσει καποιος και ειμαι αρκετα χαρουμενος που υπαρχει online help. θα θελα να σου πω πως τα βρήκα λιγο περιεργα αυτα που εχεις γραψει στον κωδικα. το περιμενα πιο απλο. εχεις βαλει το create να δημιουργει τα boxakia. θα θελα να μην υπαρχει αυτο το κουμπι και με ενα απλο κλικ στο movie να κανει αυτην την δουλεια. και κατι αλλο, εχω ξεκινησει με flash 8, αυτο ειναι cs4. πιστευεις πως θα πρεπε να ασχοληθώ με cs3 i kai cs4? θα ναι πιο απλα? απλα ειπα να ασχοληθω με flash 8 που υπαρχουν περισσοτερα παραδειγματα. anyway, θα περιμενω απαντηση και θα ανεβασω κι εγω αυτο που εχω δημιουργησει να μου πεις την γνωμη σου. Ευχαριστω και παλι.

Άβαταρ μέλους
HeRu
Flash Moderator
Δημοσιεύσεις: 800
Εγγραφή: 16 Αύγ 2004 10:49
Επικοινωνία:

δημιουργια movieclip + drag and drop

Δημοσίευση από HeRu » 10 Μαρ 2010 11:29

Είναι καλύτερα να ασχοληθείς με actionscript 3 (CS 3-4-5) και μην ανησυχείς, υπάρχουν πολλά παραδείγματα να σε βοηθήσουν και πολλά έτοιμα scripts να χρησιμοποιήσεις.

Ο τρόπος που κάνω create είναι απλά ένα παράδειγμα για να δεις πως δουλεύει. Μπορείς να βάλεις αυτόν τον κώδικα σε listener στο stage και να μην χρειάζεται κουμπί.

vagelismember
Δημοσιεύσεις: 40
Εγγραφή: 14 Φεβ 2010 14:26

δημιουργια movieclip + drag and drop

Δημοσίευση από vagelismember » 10 Μαρ 2010 16:34

class Box extends MovieClip
{
var mc:MovieClip;
public function Box(passed_mc:MovieClip) // Constructor that takes mc as argument
{
mc = passed_mc; // assign passed mc to our class member
mc._x = _root._xmouse;
mc._y = _root._ymouse;
mc.beginFill( 0xFF0000, 100);
mc.moveTo(0, 0);
mc.lineStyle(2,0x000000,100);
mc.lineTo(130, 0);
mc.lineTo(130, 100);
mc.lineTo(0, 100);
mc.lineTo(0, 0);
mc.endFill();
mc.createTextField("mytext",1,10,10,110,30);
mc.mytext.multiline = true;
mc.mytext.border = true;
mc.mytext.type = "input";
mc.mytext.background = true;
}
}


kai parakatw to .fla .... me as2 kai flash 8.




import Box;
var boxNo = 1;
var nameof:String = "box"+boxNo;
_root.createEmptyMovieClip(nameof,1);

var flag = 0; /* flag gia na min dimiourgei pantou to node */
// box counter

var mouseListener:Object = new Object();
mouseListener.onMouseDown = function(){
if(flag==0){
trace(nameof);
var box1:Box = new Box(box1);
box1.duplicateMovieClip("box2",2);
//var box2:Box = new Box(box2);
boxNo=boxNo+1;
flag=1; }

}

if(flag==1) { flag=3; }
Mouse.addListener(mouseListener);

/*---------------------------DRAG N DROP THE NODE ---------------------------------------*/

box1.onPress=function():Void {
box1.startDrag()
}
box1.onRelease = function():Void {
box1.stopDrag();
}
/*---------------------------------------------------------------------------------------*/

αυτο δεν ξερω να το κανω convert se cs3. omws den mporw na to ftiaksw kathe fora pou tha patas klik, na dimiourgei kai ena kainourgio box. den mporw na katalabw gt mono otan kanw createEmptyMovieClip("box1",1) mono tote emfanizei to box pou exw kalesei na dimiourgithei me ton constructor. apla thelw kathe fora p tha kaneis klik panw, na dimiourgei ta boxakia: box1,box2....boxN. tha tan kalutero na sxediasw(oxi me entoles) to arxiko box kai na to kalw apo tin library? mporei na ginei auto? kai ta mesa tou periexomena(text πχ) tha einai prospelasima? συγγνωμη που ρωταω πολλα, αλλα δεν παει αλλο, το χω βαλει σκοπο να το τελειωσω το project. Ευχαριστω.

vagelismember
Δημοσιεύσεις: 40
Εγγραφή: 14 Φεβ 2010 14:26

δημιουργια movieclip + drag and drop

Δημοσίευση από vagelismember » 03 Μάιος 2010 17:33

καλησπερα σας. προσπαθω να δημιουργησω μια γραμμη η οποια να ενωνει 2 box. απλα θελω να παραμενουν ενωμενα και σε περιπτωση drag n drop. τι προτεινετε? σκεφτηκα να φτιαξω μια κλαση η οποια να εχει μεσα τον μηχανισμο δημιουργιας της γραμμης αλλα δεν μπορω να βρω τι πρεπει να βαλω πριν τις εντολες moveTo kai lineTo. θα περιμενω απαντηση σας, ευχαριστω

Άβαταρ μέλους
HeRu
Flash Moderator
Δημοσιεύσεις: 800
Εγγραφή: 16 Αύγ 2004 10:49
Επικοινωνία:

δημιουργια movieclip + drag and drop

Δημοσίευση από HeRu » 04 Μάιος 2010 10:06

Καταρχάς, όπως αναφέρεις και εσύ, είναι το θέμα πού θα δημιουργείται αυτή η γραμμή.

Το πιο συνηθισμένο είναι αυτή η class που θα είναι υπεύθυνη για να ενώνει δυο boxes να κάνει extend to Sprite, ώστε να μπορείς να σχεδιάσεις μέσα στο ίδιο το class. (this.lineStyle(), this.moveTo(), this.lineTo())

Έπειτα θα πρέπει τοποθετηθεί στο stage και να είναι πάντα πίσω από τα boxes. Αυτό γίνεται βάζοντας την class να έχει index μικρότερο από τα boxes, συνήθως 0. (stage.setChildIndex(class, 0))

Τέλος, για να είναι μόνιμα συνδεδεμένα, θα πρέπει να εκτελείς τον κώδικα σου επαναλαμβανόμενα, μέσω enter frame listener ή ενός timer.

vagelismember
Δημοσιεύσεις: 40
Εγγραφή: 14 Φεβ 2010 14:26

δημιουργια movieclip + drag and drop

Δημοσίευση από vagelismember » 05 Μάιος 2010 17:30

πρσπαθησα να κανω αυτα που μου ειπες, απο χθες το βραδυ δν εκλεισα ματι. εφτασα σε αδιεξοδο. αν μπορεις βοηθησε με να το βγαλω περα γιατι δν παει αλλο. αυτο που προσπαθω να κανω ειναι : οταν κανεις κλικ στο κουμπι που ειναι μεσα στο node να ξεκιναει μια γραμμη η οποια θα ακολουθει το ποντικι και οταν ξεκλικαρεις πανω σε αλλο node τοτε να δημιουργει μια γραμμη μεταξυ των 2 nodes, και καθε φορα που κανεις drag n drop ενα απο τα 2 nodes, η γραμμη να συνεχιζει να τα ενωνει. στην περιπτωση ου εχω δημιουργησει πχ 10 nodes, να ειναι δυνατες και οι 10 συνδεσεις. Δεν ξερω ειλικρινα τι αλλο να κανω. θα περιμενω απαντηση. Ευχαριστω

vagelismember
Δημοσιεύσεις: 40
Εγγραφή: 14 Φεβ 2010 14:26

δημιουργια movieclip + drag and drop

Δημοσίευση από vagelismember » 05 Μάιος 2010 17:53

τα αρχεια που εχω δημιουργησει
Συνημμένα
files.rar
τα αρχεια του εργου
(19.5 KiB) Μεταφορτώθηκε 375 φορές

Άβαταρ μέλους
HeRu
Flash Moderator
Δημοσιεύσεις: 800
Εγγραφή: 16 Αύγ 2004 10:49
Επικοινωνία:

δημιουργια movieclip + drag and drop

Δημοσίευση από HeRu » 07 Μάιος 2010 11:13

Η λειτουργικότητα που θέλεις να δημιουργήσεις, δεν είναι ακριβώς εύκολη ή για αρχάριους.

Για να λειτουργήσει αυτό που θέλεις, θα πρέπει να έχεις ένα class που θα ελέγχει ποια objects μπορούν να ενωθούν, ποια είναι ήδη ενωμένα και επίσης να διατηρεί αυτές τις συνδέσεις αν κάνεις drag τα nodes, να διαγράφει το line όταν σβήνεται ένα node κλπ.

Αυτό που θέλεις να πετύχεις, ονομάζεται Node Based UI. Υπάρχει ένα παράδειγμα σε Flex ( http://www.flexmonkey.co.uk/calc_v1/NodeRenderer.html ) καθώς και το source του ( http://www.flexmonkey.co.uk/calc_v1/srcview/index.html ).

Βρήκα και ένα παρόμοιο παράδειγμα σε AS 2.0 ( http://www.actionscript.org/forums/show ... 3?t=103266 ).

Δες αν μπορείς να βγάλεις άκρη με αυτά, αλλιώς θα προσπαθήσω να γράψω ένα tutorial μόλις βρω λίγο χρόνο.

vagelismember
Δημοσιεύσεις: 40
Εγγραφή: 14 Φεβ 2010 14:26

δημιουργια movieclip + drag and drop

Δημοσίευση από vagelismember » 11 Μάιος 2010 18:57

Σ ευχαριστω που το εψαξες, το τελευταιο που μου προτεινες ειναι αυτο που θα ηθελα, μονο που ειναι σε as2, και δεν εχω ιδεα να το μετατρεψω σε as3. δεν γνωριζω καν αν γινεται.

Απάντηση

Επιστροφή στο “Flash γενικά”

Μέλη σε σύνδεση

Μέλη σε αυτήν τη Δ. Συζήτηση: Δεν υπάρχουν εγγεγραμμένα μέλη και 0 επισκέπτες