Форум 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: хоть рисунок и был нарисован мышкой, это дело не меняет, при программном рисовании эффект то-же.

Dezar 02.09.2009 13:51

не то..так как я уже написал, что толщина не меняется..меняется положение.
толщина не меняется точно, но за счет чего-то происходит смешение

MerlinTwi 03.09.2009 13:05

Приведите скриншоты, не понимаю о чем речь.

Dezar 03.09.2009 15:01

Вложений: 1
вот скрин до и после зума.

Alex Lexcuk 03.09.2009 15:29

Ну и какой тут зум 0.05???
Бред...
Зум должен быт 2, 3 и тд...
Ни в однлй программе не зума 0.05. У него ж пиксели не попадают. (меньше пиклсела сделать не получится, сработает сглаживание - и результат будет как на скриншоте) так-что все правильно.

Dezar 03.09.2009 16:00

если позволяет делать зум 0.00005 и тп...значит никакого "должен" тут нет.
можно ли избежать это "сглаживание" ?как-то компенсировать или еще что-нибудь.

Партизан 04.09.2009 12:28

Dezar, никак...
Только если мучать растровую графику с фильтрами и кучей расчетов. Если у вас конечно есть желание фотошоп писать - начните с понимания точек на экране...

Ваша задача сейчас примерно так выглядит:
Есть 6 лампочек в ряд, нужно зажечь 4 и чтоб между ними было ровно одна не горящая лампочка... Удачи. Пилите пикселы... :)

Dezar 04.09.2009 12:46

сарказм оценил))
ладно.всем спасибо)
все понял


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

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