Özel bir uicomponent oluşturdum ve tarayıcı veya belirli bir konteyneri yeniden boyutlandırıldığında, bir yeniden boya oluşuyor, ancak bileşenin içeriği yeniden ve tekrar tekrar çiziliyor ... Öyleyse, eğer konteynırı hareket ettirirsek, birbirinin üzerine çizilen birden fazla daireyle bitireceğim ama yeniden boyamanın meydana geldiği yerde konteynerin nerede olduğuna bağlı olarak ofset yapacağım. GüncellemeTanışmanızList kodu aşağıda. Bir tür net yapmam gerekiyor, böylece bu şekilde sürekli çoğaltılmıyor. Yardımlarınız için çok teşekkürler!Özel Flex/ActionScript UIComponent Yeniden Boyutlandırma Sırasında Birden Çok Kez Boyanmaya Devam Ediyor
override protected function updateDisplayList(unscaledWidth:Number, unscaledHeight:Number):void {
super.updateDisplayList(unscaledWidth, unscaledHeight);
trace("height: " + parent.height);
trace("width: " + parent.width);
if (parent.height <= parent.width) {
radius = Math.round((parent.height*.95)/2);
}
else {
radius = Math.round((parent.width*.95)/2);
}
trace("radius: " + radius);
outterRadius = Math.round(radius*.70);
innerRadius = Math.round(radius*.30);
trace("outterradius: " + outterRadius);
trace("innerradius: " + innerRadius);
centerX = this.width/2;
centerY = this.height/2;
trace("centerX: " + centerX);
trace("centerY: " + centerY);
var innerCircle:Sprite = new Sprite();
var outterCircle:Sprite = new Sprite();
var baseCircle:Sprite = new Sprite();
baseCircle.graphics.beginFill(0x000000);
baseCircle.graphics.drawCircle(centerX, centerY, radius);
outterCircle.graphics.lineStyle(2, 0xA10303, .75);
outterCircle.graphics.drawCircle(centerX, centerY, outterRadius);
innerCircle.graphics.lineStyle(2, 0xA10303, .75);
innerCircle.graphics.drawCircle(centerX, centerY, innerRadius);
addChild(baseCircle);
addChild(outterCircle);
addChild(innerCircle);
for (var bubbleCount:int=0; bubbleCount < bubbleList.length; bubbleCount++) {
var globalPoint:Point = this.localToGlobal(getPointInCircle(radius));
var radarBubble:RadarBubble = bubbleList.getItemAt(bubbleCount) as RadarBubble;
var bubbleLocalPoint:Point = radarBubble.globalToLocal(globalPoint);
radarBubble.x = bubbleLocalPoint.x;
radarBubble.y = bubbleLocalPoint.y;
trace("Add bubble: " + radarBubble.x + ", " + radarBubble.y + ", " + radarBubble.radius);
addChild(radarBubble);
}
// create radar display lines to be animated
for (var angleCount:int=0; angleCount < 360; angleCount++) {
var tmpLine3:Sprite = new Sprite();
tmpLine3.graphics.lineStyle(2, 0xA10303, 1);
tmpLine3.graphics.moveTo(centerX, centerY);
tmpLine3.graphics.lineTo(getEndpoint(angleCount).x, getEndpoint(angleCount).y);
tmpLine3.visible = false;
addChild(tmpLine3);
lineCollection.addItemAt(tmpLine3, angleCount);
}
}
+1 İyi yanıt. Bana bunu yendin;) –
Teşekkürler Guys - Daha fazla bilgi edinmek için updateDisplayList() ve createChildren() öğelerini daha iyi anlayacağım. Size nasıl çıktığımı bilmenizi sağlayacağım. Çocuklar için dairelere ihtiyacım olduğunu düşünmüyorum, sadece bunları updateDisplayList() 'de çizebilirim. Ancak, eklediğim diğer çocukların da Sprites'in ayrı olması gerekiyor ... – fortpointuiguy
Flextras and Wade - addChildren() 'da addChildren()' da canlandırılması gereken satırlarımı eklediğimde, satırlar asla görüntülenmiyor. Başlangıçta görünür olarak ayarlandılar = false b/c Satırda canlandırmak için her seferinde yalnızca bir satır görüntüleyen bir zamanlayıcım var. Düşüncesi olan var mı? – fortpointuiguy