2012-03-05 2 views
0

Я новичок в холсте, поэтому прошу прощения за новичок. Я пытаюсь анимировать квадрат на холсте, который меняет цвета, вращается и масштабируется вверх и вниз (это только для практики). Я просто пытаюсь понять все концепции и создать пример, который делает все сразу.HTML5 Canvas - Анимация цвета, масштаба и вращения

То, что я хочу, это масштабирование до определенной суммы, а затем, когда оно достигает этой суммы, оно масштабируется до начальной суммы (а затем повторяется). То же самое касается цвета (продолжайте анимацию, затем переходите в обратном направлении по цветам). Как я могу это сделать?

Вот пример моего кода, который я написал:

http://jsfiddle.net/ggsFJ/1/

Вы заметите пару ошибок:

  1. После того, как цвет становится желтым, он останавливает анимацию.

  2. Масштабирование, очевидно, не работает.

  3. Вращение не слишком быстро очищает холст или что-то в этом роде, потому что оно показывает след позиций.

Где я могу найти ресурсы для этого? Любая помощь приветствуется.

+0

Я предполагаю, что миниатюс обратился к вашей проблеме. Просто хотел сказать, 1. частота кадров - это не задержка. 2. Вы должны вызвать более поздние тайм-ауты после того, как убедитесь, что первый завершен. – loxxy

+0

Спасибо за очищение этой терминологии. Это определенно имеет больше смысла. – opes

ответ

4

Там одна небольшая проблема, которая вызывает все другие проблемы (ну, кроме желтого - Я не испытывающие эту конкретную единицу):

ctx.restore; 

Эта линия не делает ничего. Вам нужно позвонить ctx.restore с помощью круглых скобок. После того, как вы сделаете это, масштабирование работает, и clearRect() очистит нетрансформированный прямоугольник:

ctx.restore(); 

And here's the updated demo.

+0

Ах. Простые опечатки ... Спасибо! Но как я могу заставить его постепенно сжиматься до первоначального масштаба, а не просто прыгать обратно к нему? Какой тип цикла я бы сделал, что позволило бы мне это сделать? Кроме того, чтобы увидеть ошибку цвета, просто дайте анимации работать около 30 секунд или около того, и вы увидите, о чем я говорю. – opes

+1

@ Dan: для плавных переходов цвета было бы лучше просто использовать синтаксис 'hsl (..., ..., ...)'; это уже цветовое колесо, и любой браузер, поддерживающий '', поддерживает его. Что касается подъема, то, опустившись, вам понадобится немного причудливого модульного трюка. См. Мое обновление по адресу http://jsfiddle.net/ggsFJ/8/. – Ryan

+0

Удивительный! Это именно то, что я ищу. Это очень меня показывает. Спасибо за это! – opes

0

Проблемы я вижу с restore вызовом метода. Вы только что сказали ctx.restore (возможно, по ошибке). Он должен быть ctx.restore();

+0

Да, простая опечатка. Спасибо хоть! – opes

Смежные вопросы