Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   Пропадает отображение, если выставить размеры. (http://www.flasher.ru/forum/showthread.php?t=142851)

cpu 01.08.2010 20:54

Пропадает отображение, если выставить размеры.
 
Странная проблема, не могу понять её логику.
Если создать Sprite и проставить размеры mySprite.width и mySprite.height например 200 пикселов, после в коде что-нить нарисовать через graphics, этого нарисованого не видно.
Причем не первый раз уже.

udaaff 01.08.2010 20:59

Вы размеры пытаетесь пустому месту задать?

cpu 01.08.2010 21:05

Если на Sprite который является рабочей областью проги нарисовать прямоугольник, 2000*1000, то трейсом длину и высоту видно, а если выставить через свойства width и height то 0.
Это правильно будет, устанавливать размер таким образом(через прямоугольник)?

udaaff 01.08.2010 21:17

Непонятно почему через width и height 0. Приведите пример...

cpu 01.08.2010 21:44

Основной класс, на котором строится проект.
Класс расширяет Sprite(ну это понятно думаю).

Размер stage, фоновый цвет выставил.

Код AS3:

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));
        }
 
    }
 }


udaaff 01.08.2010 21:55

Код AS3:

var s:Sprite = new Sprite();
s.graphics.drawRect(0, 0, 123, 123);
trace(s.width) // 123
s.width = 300;
trace(s.width) // 300

Обычно перед рисованием фигуры задается заливка или стиль линии. Иначе получается, что вилами по воде водите.

cpu 01.08.2010 22:00

Вы меня не поняли, варианты должны быть по отдельности, т.е. посмотрите с первым как, а потом удалив первый, сделайте как во втором.
Заливка не имеет значение, потому как во втором варианте вообще нет graphics.бла-бла.

udaaff 01.08.2010 22:11

Ну тогда перечитайте второй пост. Пустому месту нельзя задавать размеры.

cpu 01.08.2010 22:15

Цитата:

Сообщение от udaaff (Сообщение 926349)
Ну тогда перечитайте второй пост. Пустому месту нельзя задавать размеры.

значит это нормальное поведение.
Меня просто смущало, что на спрайте есть объекты(добавленные через addChild), которых видно, и как бы спрайт поэтому не пустой, но получается что система один хер его считает пустым, пока на нем чего-нить не нарисовано через graphics.

udaaff 01.08.2010 22:16

Если в нем будут объекты, то он будет не пустым.


Часовой пояс GMT +4, время: 19:45.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.