|
|
|||||
Регистрация: Aug 2014
Сообщений: 10
|
работа с графикой
Всем привет!. Возник вот такой вопрос. С какой частотой можно менять цвет отрисовки линии в shape через .graphics.lineStyle() ? Немного поясню. Мне нужно в shape рисовать несколько прямых разноцветных кривых. Каждые 10 милисекунд я для каждой кривой знаю текущую и следующую координату "головы". В функции я задаю цвет линии, эти координаты и рисую маленькую прямую, из которых и состоят кривые. Вот так
А получается черт знает что! Цвета змеек меняются местами, а одна змея вообще разноцветная! Дело в слишком высокой скорости смены цвета? |
|
|||||
Banned
[+1 06.12.14]
[+1 18.12.14] [+1 30.12.14] Регистрация: Aug 2014
Сообщений: 461
|
Цитата:
delay Цитата:
|
|
|||||
Регистрация: Aug 2014
Сообщений: 10
|
Спасибо за ответ, попробовал увеличить. Но понял, что дело не в этом. Чудеса появляются, когда shape залит другим цветом.. Почему так, не знаете?
|
|
|||||
Banned
[+1 06.12.14]
[+1 18.12.14] [+1 30.12.14] Регистрация: Aug 2014
Сообщений: 461
|
Сделайте хоть скрин и кода побольше покажите, а то для Вас чудеса, это изменение цвета,
а для меня чудеса , это - Цитата:
|
|
|||||
Регистрация: Aug 2014
Сообщений: 10
|
прямая кривая... я хотел сказать, кривая из маленьких прямых).
Вот код и скрин. Верхняя просто рисуется синей, а у второй синяя только "голова", а все остальное красное var mainTimer:Timer = new Timer(500,0); var a = 50; var totalShape:Shape = new Shape(); totalShape.graphics.beginFill(0xff8e00);//если убрать эту строку, то все в порядке totalShape.graphics.lineStyle(1,0xff0000,1); totalShape.graphics.moveTo(0,0); totalShape.graphics.lineTo(650,0); totalShape.graphics.lineTo(650,600); totalShape.graphics.lineTo(0,600); totalShape.graphics.lineTo(0,0); addChild(totalShape); mainTimer.start(); mainTimer.addEventListener(TimerEvent.TIMER, tik); function tik(e:TimerEvent) { totalShape.graphics.lineStyle(10,0xFF0000,1);//цвет верхней змеи должен быть красным totalShape.graphics.moveTo(a,200); a+=10; totalShape.graphics.lineTo(a,200); a-=10; totalShape.graphics.lineStyle(10,0x0000FF,1);//цвет нижней змеи должен быть синим totalShape.graphics.moveTo(a,300); a+=10; totalShape.graphics.lineTo(a,300); } |
|
|||||
Banned
[+1 06.12.14]
[+1 18.12.14] [+1 30.12.14] Регистрация: Aug 2014
Сообщений: 461
|
Это весь код который рисует и рассчитывает линии? Я плохо знаком с рисованием в graphics и может быть по этому
мне кажется, что в данном коде нет ошибки. А вот под оранжевым слоем у Вас нет синего и красного слоя? А то может это не рисунки, а дырки?) |
|
|||||
Регистрация: Aug 2014
Сообщений: 10
|
Я написал другой код, который отражает суть проблемы (я не написал в него лишь несколько 'import'). В основном коде было бы долго разбираться. Можно просто взять все это и скопировать себе, дописав вверху
Если не сложно, посмотрите. А то я никак не могу понять, что это за ерунда |
|
|||||
.
|
Цитата:
Может быть он и вам подойдет? Обратите особое внимание на инструкцию clear(). Добавлено через 16 минут Кстати, очевидно, что проблема в том, что вы не очищаете graphics после предыдущего рисования на нем. Но не на это я хочу обратить внимание. Ваш подход с рисованием по таймеру имеет более глубокие последствия. Дело в том, что flash player имеет свой т.н. elastic racetrack и он палец о палец не ударит, чтобы отрисовать заказанное вами, ранее, чем наступит Render Action. Получается, что какая-то часть кода, рисовавшего по таймеру просто нагревало процессор и ничего не существенного не делало. Есть, конечно, читерский способ заставить flash player рендерить экран. Имя ему #updateAfterEvent(). Но дети мне подсказывают, что вам это пока не нужно. Последний раз редактировалось dimarik; 27.09.2014 в 21:35. |
|
|||||
Banned
[+1 06.12.14]
[+1 18.12.14] [+1 30.12.14] Регистрация: Aug 2014
Сообщений: 461
|
Цитата:
А должно у Вас как быть? Верхняя все красная, а нижняя синяя? |
|
|||||
Регистрация: Aug 2014
Сообщений: 10
|
dimarik, мне не нужно движение, мне нужна линия из точки. Проблема решена, моя ошибка заключалась в том, что я забыл написать endFill(), после этого все пришло в порядок.
А теперь про таймер.. Честно, я почти ничего не понял. Вы можете посоветовать что-то конкретное? Сейчас я столкнулся с проблемой скорости. Я хочу сделать приложение для вконтакте, сейчас залил, и fps упало примерно до 10. Заменил timer на enter_frame, ничего не изменилось.. |
Часовой пояс GMT +4, время: 22:08. |
|
« Предыдущая тема | Следующая тема » |
|
|