2013-04-07 8 views
3

Есть ли способ отображения бесконечного холста с помощью EaselJS? Я прочитал способы сделать это с помощью Javascript или JQuery, но есть ли способ управлять им с помощью EaselJS?Бесконечное полотно с EaselJS

Спасибо!

+0

Что вы подразумеваете под «бесконечным холстом»? Если вы ссылаетесь на размер сцены - это ограничено в зависимости от устройства (около 6k-8k пикселей), но положение объектов на сцене может быть довольно бесконечным. -Не уверен, хотя, если бы вы имели в виду это. – olsn

+0

@olsn Я подозреваю, что OP означает использование преобразований в командах рисования холста, чтобы видимый контент показывал непрерывную прокрутку в любом направлении «навсегда». – Phrogz

+0

Это правильно, @Phrogz, вот что я ищу. Я видел это: http://stackoverflow.com/questions/7218645/how-to-have-an-infinitely-big-canvas Но я думаю, что я не могу сделать холст перетаскиваемым, не так ли? Я пробовал что-то вроде stage.onPress, но это не сработало. – Cod1ngFree

ответ

10

Вы можете перетащить сам холст с помощью JavaScript/jQuery, но есть встроенная модель перетаскивания на контент EaselJS. Проверьте образцы DragAndDrop в папке примеров.

Основные шаги:

  • Прослушайте событие MouseDown на что-то. Вы должны использовать встроенные события EaselJS на любом экранном объекте. Вы не можете использовать сценарное событие «stagemousedown», потому что оно не отображает требуемые события перетаскивания, а события DOM на Canvas не помогут.
  • Событие мыши, которое содержит обработчик событий, будет включать дополнительные события для перетаскивания. Добавьте слушателей для «mousemove» и «mouseup».
  • Ответьте мыши на событие перемещения, чтобы переместить содержимое на холст.

Я собрал небольшой шип, чтобы показать это. http://jsfiddle.net/lannymcnie/jKuyy/1/

Он нарисовал кучу контента, а затем его можно перетащить. Красный ящик - это то, что слушает события мыши, но затем просто перемещает большой контейнер со всем содержимым.

Вот основные моменты:

dragBox.addEventListener("mousedown", startDrag); // Object listens to mouse press 

function startDrag(event) { 
    // Get offset (not shown here, see fiddle) 
    event.addEventListener("mousemove", doDrag); 
} 
function doDrag(event) { 
    // Reposition content using event.stageX and event.stageY (the new mouse coordinates) 
} 

Надеется, что это помогает!

Редактировать: СЛЕДУЮЩАЯ версия EaselJS (0.7.0+, доступна в GitHub с августа 2013 года) имеет новую модель перетаскивания, которая еще проще в использовании. Новая модель событий пузырьков позволяет просто прикрепить события нажатия и нажатия на любом объекте, чтобы получать события в любое время, когда кто-то нажимает на объект, а затем выполняет перетаскивание.

dragBox.on("pressmove", function(event) { 
    // Note that the `on` method automatically sets the scope to the dispatching object 
    // Unless you pass a scope argument. 
    this.x = event.stageX; 
    this.y = event.stageY; 
}); 

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

  • Нет связанных вопросов^_^