![]() |
|
||||||||||
|
|||||
|
Регистрация: Aug 2014
Сообщений: 10
|
Всем привет
!. Возник вот такой вопрос. С какой частотой можно менять цвет отрисовки линии в shape через .graphics.lineStyle() ? Немного поясню. Мне нужно в shape рисовать несколько прямых разноцветных кривых. Каждые 10 милисекунд я для каждой кривой знаю текущую и следующую координату "головы". В функции я задаю цвет линии, эти координаты и рисую маленькую прямую, из которых и состоят кривые. Вот такfunction drawTochkaLine(zmeya,x1,y1,x2,y2) { totalShape.graphics.lineStyle(3,zmeya.zmeykaColor,1); if (zmeya == zm2) { totalShape.graphics.moveTo(x1,y1); totalShape.graphics.lineTo(x2,y2); } if (zmeya == zm) { totalShape.graphics.moveTo(x1,y1); totalShape.graphics.lineTo(x2,y2); } } ! Цвета змеек меняются местами, а одна змея вообще разноцветная! Дело в слишком высокой скорости смены цвета? |
|
|||||
|
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, время: 11:16. |
|
|
« Предыдущая тема | Следующая тема » |
|
|