Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 3.0 (http://www.flasher.ru/forum/forumdisplay.php?f=83)
-   -   scale и lineTo (http://www.flasher.ru/forum/showthread.php?t=129424)

Dezar 01.09.2009 15:15

scale и lineTo
 
здравствуйте.
у меня такая проблема

рисую я линии таким кодом

Код AS1/AS2:

                        for (i=0;i<=192;i++){
                                fg.graphics.moveTo(i*5,0);
                                fg.graphics.lineTo(i*5,fg.height);
                        }

рисуется все нормально и красиво.
НО..когда я начинаю скалить графику..линии ведут себя неадекватно.
а именно сетка(которая рисуется) начинается смещаться видоизменяться и тп.
причем через шаг(шаг scale =1)
я помню в 8 флеше была такая тема..и когда рисовал руками..там можно было поставить спец линию, которая не вела себя так.
как это сделать кодом???

RandomUser 01.09.2009 16:00

А попробуйте рисовать не линии, а прямоугольники. Или поставьте pixelHinting -> true (это в graphics.lineStyle), может и поможет.

Dezar 01.09.2009 16:05

рисовать к сожалению надо именно линии.
pixelHinting - не помог.
что еще можно придумать?

Добавлено через 25 минут
может есть что-то типа hireline? __)

ToRR 01.09.2009 17:40

у flash.display.graphics есть:
public function lineStyle(thickness:Number = NaN, color:uint = 0, alpha:Number = 1.0, pixelHinting:Boolean = false, scaleMode:String = "normal", caps:String = null, joints:String = null, miterLimit:Number = 3):void

из хэлпа: thickness:Number (default = NaN) — An integer that indicates the thickness of the line in points; valid values are 0-255. If a number is not specified, or if the parameter is undefined, a line is not drawn. If a value of less than 0 is passed, the default is 0. The value 0 indicates hairline thickness; the maximum thickness is 255. If a value greater than 255 is passed, the default is 255.

Dezar 01.09.2009 18:01

не..я имел ввиду что-то на подобии..но чтоб не съезжали линии...
неужели никто не сталкивался?

alatar 01.09.2009 20:44

попробуй поставить pixelHinting = true
И что значит смещаться, видоизменяться и т.д? Поподробнее можно?

Dezar 02.09.2009 10:15

pixelHinting = true уже ставил,ибо такое решение подсказали в 2 посте.
по подробнее...
есть сетка нарисованная методом указанным выше.
когда я начинаю зумировать(меняя scale) некоторые из линии(в непонятной прогрессии) смешаются то влево то в право..и нарушается целостность сетки.
то есть она становится не ровной.
ширина линии не меняется. проверял.

MerlinTwi 02.09.2009 12:50

Линии при отрисовке округляются до целой точки, из-за этого и появляется "смещение", заметное при малой скорости анимации.
Попробуйте рисовать заливку вместо линии:
Код AS1/AS2:

fg.graphics.beginFill(0);
...
fg.graphics.drawRect(i*5,0, 1,fg.height);

заливка, в отличии от линий, будет рисоваться с "между" точками (альясинг) при этом появится эффект легкого размытия.

Dezar 02.09.2009 12:56

попробовал.
честно говоря ничего не изменилось.

Alex Lexcuk 02.09.2009 13:42

>>может есть что-то типа hireline? __)

Так вам просто надо scale9grid (при ней не меняется полщина линии при масштабировании)
http://www.murmadillo.tut.su/m/scale9gridTrue.rar

PS: хоть рисунок и был нарисован мышкой, это дело не меняет, при программном рисовании эффект то-же.


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

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