Zurück   Flashforum > Flex und AIR > Flex programmieren

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 27-03-2008, 15:35   #1 (permalink)
Neuer User
 
Registriert seit: Jun 2007
Beiträge: 71
solid border -> canvas in canvas bug

Hallo zusammen,

bin heute über einen Bug gestolpert. Ob er jetzt Flex spezifisch ist oder von ActionScript kommt kann ich gerade nicht sagen.

Ausgangsposition war folgende.
Ich hab ein Canvas(track) in dem mehrere Canvas(clips) zur Laufzeit abgelegt werden. Über einen slider kann man die Weite(zoomFactor) der clips sowie des tracks ändern. Bei verändern des slider.value verschwanden nun bei bestimmten Werten immer meine clips.

Nach langem Suchen, bin ich dann dahinter gekommen, dass es an meiner solid Border liegt. Wenn sowohl track als auch clips borderStyle = solid haben, tritt der Fehler auf. Setz ich track auf borderStyle = none funktioniert es wunderbar.

Hier mal der Code als Minimalbeispiel:
PHP-Code:
<?xml version="1.0" encoding="utf-8"?>
<mx:Application xmlns:mx="http://www.adobe.com/2006/mxml" layout="absolute" creationComplete="init()" paddingLeft="5">

    <mx:Style source="OSX.css"/>

    <mx:Script>
        <![CDATA[
            import mx.containers.Canvas;
            
            public var cnvs:Canvas;
            public var childs:Array = new Array();
            
            public function init() : void
            {
                cnvs = new Canvas();
                cnvs.x = 0;
                cnvs.y = 50;
                cnvs.width = 1024;
                cnvs.height = 40;
                cnvs.styleName = "trackCanvas";
                
                this.addChild(cnvs);
                
                repaint();
            }
            
            public function repaint() : void
            {
                var temp:Canvas = null;
                
                for each( var canvas:Canvas in childs )
                {
                    if( temp == null )
                    {
                        canvas.x = 0;
                    }
                    else
                    {
                        canvas.x = temp.x + temp.width;
                    }
                    
                    canvas.width = 5 * slider.value;
                    
                    temp = canvas;
                }
                cnvs.width = 1024 * slider.value;
            }
            
            public function onClick(event:MouseEvent) : void
            {
                var canvas:Canvas = new Canvas();
                canvas.height = 40;
                canvas.styleName = "timelineClip";
                cnvs.addChild( canvas );
                
                childs.push(canvas);
                repaint();
            } 
        ]]>
    </mx:Script>

    <mx:HSlider x="10" y="10" id="slider" minimum="1" maximum="100" change="repaint()" liveDragging="true" value="50"/>
    <mx:Button x="269" y="10" label="Button" id="btn" click="onClick(event)"/>
    
</mx:Application>
und das StyleSheet:
HTML-Code:
Canvas {
  borderStyle: solid;
  borderThickness: 1;
  borderColor: #000000;
}

.timelineClip{
  backgroundColor: #8ecef0;
}

.trackCanvas{
  borderStyle: none; /* Diese Zeile weglassen um den Fehler zu sehen*/
  backgroundColor: #dddddd
}
Nutzung: Per Button 1 Canvas hinzufügen und dann den Slider bedienen!
Dann mal o.g. Zeile aus dem CSS löschen und das ganze wiederholen!

Kann mir jemand erklären warum der Fehler auftritt? Vorallem warum er nicht bei allen zoomWerten kommt?

Beste Grüße
Rotzlucky
Rotzlucky ist offline   Mit Zitat antworten
Antwort

Lesezeichen

Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an



Alle Zeitangaben in WEZ +1. Es ist jetzt 04:24 Uhr.

Domains, Webhosting & Vserver von Host Europe
Unterstützt das Flashforum!
Adobe User Group


Copyright ©1999 – 2012 Marc Thiele