Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 3.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 28.12.2012, 16:23
Tails вне форума Посмотреть профиль Отправить личное сообщение для Tails Найти все сообщения от Tails
  № 1  
Ответить с цитированием
Tails
 
Аватар для Tails

блогер
Регистрация: Dec 2008
Адрес: г. Чебоксары
Сообщений: 2,259
Записей в блоге: 6
По умолчанию Пунктирная линия пунктиром в 1px (Точечная)

Как нарисовать пунктирную линию с точками в 1px? Что-то у меня не получается, вроде бы и координаты использую только целочисленные и все равно флеш плеер их "размазывает".

Если переключить quality в low, то линий таки приобретают необходимый вид.

Пунктир.swf   (1.0 Кб)


Код AS3:
import flash.display.CapsStyle;
import flash.display.LineScaleMode;
 
var dashSpace:int		= 2;
var dashSize:int		= 1;
var lineY:int			= 50;
 
// line 1
this.graphics.lineStyle(0, 0x000000, 1, true, LineScaleMode.NONE, CapsStyle.NONE);
 
for (var i:int = 50; i < 200; i += dashSpace ) {
	this.graphics.moveTo(i, lineY)
	this.graphics.lineTo(i + dashSize, lineY);
 
	i += dashSize;
}
 
// line 2
lineY	= 80;
 
this.graphics.lineStyle(0, 0x000000, 1, false, LineScaleMode.NONE, CapsStyle.NONE);
 
for (i = 50; i < 200; i += dashSpace ) {
	this.graphics.moveTo(i, lineY)
	this.graphics.lineTo(i + dashSize, lineY);
 
	i += dashSize;
}
Вложения
Тип файла: swf Пунктир.swf (1,010 байт, 290 просмотров)
__________________
Дети не должны знать о своих родителях


Последний раз редактировалось Tails; 28.12.2012 в 17:18.
Старый 28.12.2012, 17:22
Tails вне форума Посмотреть профиль Отправить личное сообщение для Tails Найти все сообщения от Tails
  № 2  
Ответить с цитированием
Tails
 
Аватар для Tails

блогер
Регистрация: Dec 2008
Адрес: г. Чебоксары
Сообщений: 2,259
Записей в блоге: 6
Вообщем с линией у меня не получилось, сделал через фигуру:
Код AS3:
import flash.display.CapsStyle;
import flash.display.LineScaleMode;
 
var dashSpace:int		= 2;
var dashSize:int		= 1;
var lineY:int			= int(50);
 
// line 1
this.graphics.beginFill(0x000000, 1);
 
for (var i:int = 50; i < 200; i += dashSpace ) {
	this.graphics.drawRect(i, lineY, dashSize, dashSize);
	i += dashSize;
}
__________________
Дети не должны знать о своих родителях

Старый 28.12.2012, 17:45
caseyryan вне форума Посмотреть профиль Отправить личное сообщение для caseyryan Найти все сообщения от caseyryan
  № 3  
Ответить с цитированием
caseyryan
 
Аватар для caseyryan

Регистрация: Jun 2012
Адрес: Новосибирск
Сообщений: 6,644
Записей в блоге: 4
а если сделать растровую картинку 2 пикселя шириной 1 высотой, один сделать черным (ну или какой цвет там нужен), а другой другим цветом или прозрачный. И через lineBitmapStyle() задать стиль линии?
По-моему вариант гораздо удобнее.

Старый 28.12.2012, 18:04
Tails вне форума Посмотреть профиль Отправить личное сообщение для Tails Найти все сообщения от Tails
  № 4  
Ответить с цитированием
Tails
 
Аватар для Tails

блогер
Регистрация: Dec 2008
Адрес: г. Чебоксары
Сообщений: 2,259
Записей в блоге: 6
caseyryan,
Да, это отличная идея!
__________________
Дети не должны знать о своих родителях

Старый 31.12.2012, 13:34
am_devcorp вне форума Посмотреть профиль Отправить личное сообщение для am_devcorp Найти все сообщения от am_devcorp
  № 5  
Ответить с цитированием
am_devcorp
 
Аватар для am_devcorp

Регистрация: Jan 2012
Адрес: (0;0;0) относительно меня
Сообщений: 82
Отправить сообщение для am_devcorp с помощью Skype™
А как потом нарисовать эту линию?

Код AS3:
    public class Main extends Sprite {
 
		[Embed(source="../res/Untitled-1.png")]
		public var img:Class;
 
        public function Main():void {            
			var bd:BitmapData =new img().bitmapData
			this.graphics.lineBitmapStyle(bd)
			this.graphics.lineTo(200,100)			
        }
    }
ничего не рисует

(картинка нормальная, c beginBitmapFill работает нормально)
__________________
cats are supreme beings

Старый 31.12.2012, 13:55
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 6  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
drawRect надо.

Старый 31.12.2012, 14:32
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 7  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Обычный lineStyle надо задавать сначала. Как еще Вы укажите толщину, прозрачность и т.п.
lineBitmapStyle задает только параметры битмапной заливки линии. Для рисования собственно линии lineStyle обязателен. И всегда таким был.
__________________
Reality.getBounds(this);

Старый 31.12.2012, 14:36
etc вне форума Посмотреть профиль Найти все сообщения от etc
  № 8  
Ответить с цитированием
etc
Et cetera
 
Аватар для etc

Регистрация: Sep 2002
Сообщений: 30,787
Оу, не заметил lineBitmapStyle

Старый 31.12.2012, 16:19
Wolsh вне форума Посмотреть профиль Отправить личное сообщение для Wolsh Найти все сообщения от Wolsh
  № 9  
Ответить с цитированием
Wolsh
Нуб нубам
 
Аватар для Wolsh

модератор форума
Регистрация: Jan 2006
Адрес: Бердск, НСО
Сообщений: 6,445
Звездочка
Код AS3:
package 
{
	import flash.display.BitmapData;
	import flash.display.Sprite;
	import flash.events.Event;
	import flash.geom.Matrix;
	import flash.geom.Rectangle;
/* * * * * * * * * *
*                  *
*  @author wolsh   *
*                  *
\* * * * * * * * * */
	public class Main extends Sprite 
	{
		public function Main():void 
		{
			// dash sample
			var bd:BitmapData = new BitmapData(39, 1, true, 0x00000000);
			bd.setPixel32(0, 0, 0xFF000000);
			bd.fillRect(new Rectangle(4, 0, 20, 1), 0xFF000000);
			bd.setPixel32(27, 0, 0xFF000000);
			bd.fillRect(new Rectangle(31, 0, 5, 1), 0xFF000000);
			// settings
			var ang:Number = 142 * Math.PI / 180;
			var thick:Number = 1;
			var smooth:Boolean = true;
			var scale:Number = 1;
			// matrix for sample rotations
			var matrix:Matrix = new Matrix();
			matrix.createBox(scale, 1);
			// draw star outline
			this.graphics.moveTo(50, 150);
			this.graphics.lineStyle(thick);
			this.graphics.lineBitmapStyle(bd, matrix, true, smooth);
			this.graphics.lineTo(350, 150);
			matrix.rotate(ang);
			this.graphics.lineStyle(thick);
			this.graphics.lineBitmapStyle(bd, matrix, true, smooth);
			this.graphics.lineTo(100, 330);
			matrix.rotate(ang);
			this.graphics.lineStyle(thick);
			this.graphics.lineBitmapStyle(bd, matrix, true, smooth);
			this.graphics.lineTo(200, 50);
			matrix.rotate(ang);
			this.graphics.lineStyle(thick);
			this.graphics.lineBitmapStyle(bd, matrix, true, smooth);
			this.graphics.lineTo(300, 330);
			matrix.rotate(ang);
			this.graphics.lineStyle(thick);
			this.graphics.lineBitmapStyle(bd, matrix, true, smooth);
			this.graphics.lineTo(50, 150);
		}
	}
}
__________________
Reality.getBounds(this);

Создать новую тему Ответ Часовой пояс GMT +4, время: 08:35.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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