Показать сообщение отдельно
Старый 16.08.2009, 22:15
ERrorMAKros вне форума Посмотреть профиль Отправить личное сообщение для ERrorMAKros Посетить домашнюю страницу ERrorMAKros Найти все сообщения от ERrorMAKros
  № 1  
Ответить с цитированием
ERrorMAKros
 
Аватар для ERrorMAKros

Регистрация: May 2008
Адрес: Земля.Украина.Одесса
Сообщений: 219
Отправить сообщение для ERrorMAKros с помощью ICQ Отправить сообщение для ERrorMAKros с помощью Skype™
Друзья, добрый вечер, помогите пожалуйста разобраться в проблеме прорисовки линий.
Проблема показана в изображении (ниже)
Реализация класса:
Код AS3:
package
{
import flash.display.MovieClip;
import flash.display.Sprite;
import flash.display.LineScaleMode;
import flash.display.CapsStyle;
 
public class HPanel extends MovieClip
{
private var _ширина       : Number=0;
private var _высота       : Number=0;
private var _X            : Number=0;
private var _Y            : Number=0;
private var _смещениеЛинии: Number=0;
private var _толщинаЛинии : Number=0;
private var _цветЛинии    : Number=0;
 
public function HPanel(ширина_, высота_, смещениеЛинии_, толщинаЛинии_, цветЛинии_:Number=0)
{
// ---[ сохраняем настройки ]------------------------------------------------------------------------------------------------------------
   this._X             = 0;              // X
   this._Y             = 0;              // Y
   this._ширина        = ширина_;        // длинна диалогового окна;
   this._высота        = высота_;        // высота диалогового окна;
   this._смещениеЛинии = смещениеЛинии_; // отступ между линиями;
   this._толщинаЛинии  = толщинаЛинии_;  // толщина линии;
   this._цветЛинии     = цветЛинии_;     // цвет линий;
   Init(); // инициализания;
}
 
public function Init():void
{
var X0:Number =0;
var Y0:Number =0;
var X1:Number =0;
var Y1:Number =0;
 
while(true)
     {
           Y0+=this._смещениеЛинии;
           X1+=this._смещениеЛинии;
 
       if( Y0> this._высота){X0+=this._смещениеЛинии; Y0=this._высота;}
       if( X1> this._ширина){Y1+=this._смещениеЛинии; X1=this._ширина;}
 
       if((X1>=this._ширина-1) &&
          (Y1>=this._высота-1)){break;} // супер выход из цикла;
 
       var рисуемЛинии: Sprite  =new Sprite();
           рисуемЛинии. graphics.lineStyle(this._толщинаЛинии, this._цветЛинии, 1,false, LineScaleMode.NORMAL, CapsStyle.SQUARE); // показали стиль;
           рисуемЛинии. graphics.moveTo(X0, Y0);
           рисуемЛинии. graphics.lineTo(X1, Y1);
           trace("(",X0,",",Y0,") - (", X1,",",Y1,")");
           this.addChild(рисуемЛинии);
} // while
} // function
 
} // class
} // package
Запуск
Код AS3:
var панель: HPanel = new HPanel(300,200,4*2,4,0xFFFFFF);
    панель.x=30;
    панель.y=30;
addChild(панель);
...ну согласен, как бы - да, кривая математика.
Изображения
 


Последний раз редактировалось wvxvw; 16.08.2009 в 22:47.