Просмотр полной версии : Пропадает отображение, если выставить размеры.
Странная проблема, не могу понять её логику.
Если создать Sprite и проставить размеры mySprite.width и mySprite.height например 200 пикселов, после в коде что-нить нарисовать через graphics, этого нарисованого не видно.
Причем не первый раз уже.
Вы размеры пытаетесь пустому месту задать?
Если на Sprite который является рабочей областью проги нарисовать прямоугольник, 2000*1000, то трейсом длину и высоту видно, а если выставить через свойства width и height то 0.
Это правильно будет, устанавливать размер таким образом(через прямоугольник)?
Непонятно почему через width и height 0. Приведите пример...
Основной класс, на котором строится проект.
Класс расширяет Sprite(ну это понятно думаю).
Размер stage, фоновый цвет выставил.
package {
import flash.display.Sprite;
import org.moock.drawing.Ellipse;
[SWF(frameRate = "61", backgroundColor = "0x373d4b", width="600", height="500")]
public class ShapeTest extends Sprite
{
private var ell: Ellipse;
public function ShapeTest ()
{
/*--------1 вариант------------------------------------------------------*/
//так трасе показывает "600", и все что добавляется на Sprite видно
graphics.drawRect(0, 0, 600, 500);
trace(this.width);
/*--------2 вариант---------------------------------------------------*/
//так трасе показывает "0", и еще не рисуются эллипсы, которые добавляются по коду ниже
this.width = 600;
this.height = 500;
trace(this.width);
/*---------------------------------------------------------------------*/
ell = new Ellipse(250, 50);
ell.setStrokeStyle(2, 0xFFFF00);
ell.setFillStyle(0xED994F);
for (var i:uint = 1; i < 100; i++)
{
ell = new Ellipse();
addChild(ell);
ell.x = random(100, stage.stageWidth - 100);
ell.y = random(100, stage.stageHeight - 100);
arr.push(ell);
}
public function random (minVal:int, maxVal:int):int
{
return minVal + Math.floor(Math.random() * (maxVal + 1 - minVal));
}
}
}
var s:Sprite = new Sprite();
s.graphics.drawRect(0, 0, 123, 123);
trace(s.width) // 123
s.width = 300;
trace(s.width) // 300
Обычно перед рисованием фигуры задается заливка или стиль линии. Иначе получается, что вилами по воде водите.
Вы меня не поняли, варианты должны быть по отдельности, т.е. посмотрите с первым как, а потом удалив первый, сделайте как во втором.
Заливка не имеет значение, потому как во втором варианте вообще нет graphics.бла-бла.
Ну тогда перечитайте второй пост. Пустому месту нельзя задавать размеры.
Ну тогда перечитайте второй пост. Пустому месту нельзя задавать размеры. значит это нормальное поведение.
Меня просто смущало, что на спрайте есть объекты(добавленные через addChild), которых видно, и как бы спрайт поэтому не пустой, но получается что система один хер его считает пустым, пока на нем чего-нить не нарисовано через graphics.
Если в нем будут объекты, то он будет не пустым.
Достал наверно вас)
public class Main extends Sprite
{
public function Main():void
{
if (stage) init();
else addEventListener(Event.ADDED_TO_STAGE, init);
}
private function init(e:Event = null):void
{
removeEventListener(Event.ADDED_TO_STAGE, init);
// entry point
var k:Shape = new Shape();
k.graphics.lineStyle(1);
k.graphics.beginFill(0x000000, 1);
k.graphics.drawRect(5, 5, 100, 100);
k.graphics.endFill();
addChild(k);
trace(this.width); //покажет "0", хотя вижу прямоугольник "k" размером 100*100 пикселей.
//получается Main все таки 0-го размера
}
}
Перезагрузил FD и заработало. Ну и глюк был. Спасибо за терпение.
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.