2012-04-03 7 views
0

Ich mache ein Brettspiel und ich bin fest auf Problem, das hat 3-4 Stunden für mich jetzt getötet. Keine Dokumente überall, also mache ich nur Vermutungen ohne Glück.Entitymodifiers läuft, aber zeigen keine Änderung

Bedenken Sie:

public void highlightBlockTest(BoardCoordinate bc) { 
    Log.i("highlightBlock()", "entered."); 

    Point p = new Point(bc.getPuzzlePiece().getDestination()); 
    Rect rect = getBoardCoordinateRectFromPoint(p); 

    int x = rect.getX(); 
    int y = rect.getY(); 
    int w = rect.getWidth(); 
    int h = rect.getHeight(); 

    Entity e = new Entity(0, 0); 
    Rectangle r; 

    r = new Rectangle(x, y, w, 5); 
    e.attachChild(r); 
    r = new Rectangle(x, y, 5, h); 
    e.attachChild(r); 
    r = new Rectangle(x + w - 5, y, 5, h); 
    e.attachChild(r); 
    r = new Rectangle(x, y + h - 5, w, 5); 
    e.attachChild(r); 

    SequenceEntityModifier sem = new SequenceEntityModifier(
     new DelayModifier(1f), 
     new AlphaModifier(1f, 0.0f, 1.0f, new IEntityModifierListener() { 
     @Override 
     public void onModifierStarted(IModifier<IEntity> arg0, IEntity arg1) { 
      System.out.println("Alpha start!"); 
     } 

     @Override 
     public void onModifierFinished(IModifier<IEntity> arg0, IEntity arg1) { 
      System.out.println("Alpha stop!"); 
     } 
     }) 
); 

    e.registerEntityModifier(sem); 
    this.mScene.attachChild(e); 

    return; 
} 

Dieser Code soll ein "Highlight" Rechteck für einen bestimmten Block ziehen. Das Rechteck zeichnet alles, aber der AlphaModifier wendet seine Werte nicht auf die fragliche Entität an. Der DelayModifier funktioniert gut.

Ich habe ModifierListener nur hinzugefügt, um zu sehen, ob es aufgerufen wird, und es tut; Ich sehe "Alpha Start" und "Alpha Stop" in Logcat. Aber das hervorgehobene Rechteck ist immer noch da, deutlich sichtbar auf dem Brett.

Als letzten Ausweg habe ich einen MoveModifier hinzugefügt, um das Rechteck während 5 Sekunden um 50 Pixel nach rechts zu bewegen, und das Rechteck wurde sofort vom Bildschirm weg bewegt.

Warum funktionieren diese Modifizierer nicht wie erwartet?

Antwort

0

Sie müssen die Mischfunktion einstellen, rufen Sie .setBlendFunction(GL10.GL_SRC_ALPHA, GL10.GL_ONE_MINUS_SRC_ALPHA); für die Entitäten auf.

+0

Immer noch nicht funktioniert:/Es funktioniert, wenn ich 'für (int n = 0; n bos

+0

Wenn ich nur ein Rechteck mache und dieses an die Szene anschließe (anstatt der Entity und dann der Entity in der Szene), funktioniert alles perfekt. So scheint es, dass der Modifikator nicht für Kinder gilt. Wenn es nur irgendwelche Dokumente gab, die mir das vorher sagten, verschwendete ich 10+ Stunden. – bos

+0

Sie haben das Problem also gelöst? – JohnEye

Verwandte Themen