2016-07-03 17 views
-1

Ich habe den folgenden Code und die Flash-Ereignisse sind alle richtig geladen. ball ist ein Movieclip und ihm wird eine Klasse zugewiesen.Wie mache ich eine Instanz bewegen

var speedx: Number=5; 
var speedy: Number=3; 
var myball = new ball(); 
addChild(myball); 
addEventListener(Event:ENTER_FRAME,ballmove); 
function ballmove(e:Event):void{ 
    myball.x+=speedx; 
    myball.y+=speedy; 
} 

Aber jetzt ist die Instanz myball wird sich nicht bewegen, wird es nur 0,0 an Position stecken. Bitte helfen Sie mir und Ratschläge, wie man diese MyBall auszukommen einer staright Linie zu bewegen ..

Wenn ich hatte per Drag & Drop die Instanz aus der Bibliothek, dann

myball.x+=speedx; 
myball.y+=speedy; 

perfekt gearbeitet, aber nicht funktioniert nach addChild ist gegeben.

+0

tun haben:

Jetzt in Ihrem Code können Sie neue Instanz von erstellen? – null

+0

Hallo @Joseph. Willkommen bei StackOverflow. Wenn die Antwort für Sie funktioniert, markieren Sie diese bitte als richtig (klicken Sie auf das Häkchen). Auf diese Weise können andere wissen, dass es eine funktionierende Lösung gibt. Wenn nicht funktioniert, bitte geben Sie ein Feedback, damit jemand anderes Ihnen helfen kann. –

Antwort

1

In Ihrem Code haben Sie Event:ENTER_FRAME falsch verwendet, wenn es sein sollte: Event.ENTER_FRAME. Ich frage mich, ob es einen "stillen" Fehler gibt? Verwenden Sie beim Testen von Filmen Strg + Umschalt + Eingabetaste, um den Debugger auszuführen (gibt bessere Rückmeldung zu Problemen/Fehlern).

var myball = new ball(); bedeutet nichts. Sie erklären Instanz durch diese Logik verwendet:
var Namen: Datentyp = Wert, in Ihrem Code hier nur, dass var Namen = Wert gesagt hat. Überraschenderweise funktioniert es, aber ich frage mich, ob es sich bei größeren Projekten als problematisch erweisen könnte, sich damit vertraut zu machen?

Der Instanzname betrifft nur Objekte, die sich bereits auf der Bühne befinden. Wenn Sie nach Code (aus der Bibliothek) hinzufügen, stellen Sie sicher, dass Sie eine neue Instanz des Objekts erstellen, indem Sie den Namen Linkage verwenden.

Lösung:
In der Bibliothek mit der rechten Maustaste auf den "Ball" Objekt und wählen Sie "Eigenschaften", dort stellen Sie sicher, "name" ist ball und Zecken "Export für Actionscript" (Sie sollten "Class" werden Class: ball werden). OK das. var myball: ball = new ball(); ...

Ihr Code sollten Sie in Ihrem Projekt einen anderen Code aussehen

var speedx: Number=5; 
var speedy: Number=3; 
var myball: ball = new ball(); 

addChild(myball); 
addEventListener(Event.ENTER_FRAME, ballmove); 

function ballmove(e:Event):void 
{ 
    myball.x += speedx; 
    myball.y += speedy; 
} 
+0

Ich frage mich: Wenn die Verbindung nicht funktionierte, würde keine Instanz auf Position 0/0 sitzen. – null

+0

@null, Außerdem hat er 'Event: ENTER_FRAME' anstelle von' Event.ENTER_FRAME' benutzt, aber nicht den üblichen Fehler bekommen ... Ich konnte nur das Best Practice für eine funktionierende Lösung vorschlagen (auch wenn er schon einige Teile davon behandelt hat) es, wie Verknüpfung usw.) –

+0

Das könnte tatsächlich das eigentliche Problem sein. Guter Fund. – null