removeAllChildren не работает в createjs

Я пытаюсь изменить растровое изображение в createjs и хочу удалить все дочерние элементы в контейнере при нажатии кнопки сброса. Но у меня не работает removeAllChildren.

function drawPhoneImage() {
  stage = new createjs.Stage('canvas');
  container = new createjs.Container();

  phone = new createjs.Bitmap(phoneImg);
  phone.x = 268;
  phone.y = 64;

  stage.addChild(container);
  container.addChild(phone);
  stage.update();

  phone.addEventListener("click", function() {
    console.log('phone clicked');
    createjs.Ticker.addEventListener("tick", movePhoneImage);
  });
}

function movePhoneImage(event) {
  phone.x -=10;

  if(phone.x <  156) { 
    phone.x =156;
    showPhoneSnap();
  }
  stage.update(event);
}

Затем, щелкнув объект телефона, мне нужно заменить его другим растровым изображением (которое работает):

function showPhoneSnap() {
  snap = new createjs.Bitmap(snapImg);
  snap.x = 156;
  snap.y = 64;

  container.removeAllChildren();
  container.addChild(snap);
  stage.update();
}

Сначала removeAllChildren работает в первом дочернем элементе контейнера, но когда я попытался сбросить сцену после добавления другого растрового изображения в контейнер..removeAllChildren() не работает.

function resetStage() {
  container.removeAllChildren();
  stage.update();
} 

Мне трудно решить эту проблему, спасибо всем, кто может помочь.


person abelski    schedule 05.09.2013    source источник
comment
Как называется resetStage()? Во время звонка регистрируются какие-либо ошибки?   -  person olsn    schedule 05.09.2013
comment
$('#reset').click(function() { resetStage(); }); Ошибка не отображается.   -  person abelski    schedule 05.09.2013
comment
Одно из предположений заключалось в том, что область действия может быть неправильной, но в этом случае возникнет ошибка stage, а container будет undefined.   -  person olsn    schedule 05.09.2013


Ответы (1)


Убедитесь, что «snapImg» — это загруженное изображение.

snap = new createjs.Bitmap(snapImg);

Проблема в том, что вы не обновляете сцену при загрузке изображения.

var image = new Image();
image.src = "path";
image.onload = showPhoneSnap;
function showPhoneSnap() {
    //This will ensure that the image is ready.
    var bmp = new createjs.Bitmap(this);
    ...
    stage.update();
}
person sebastian.derossi    schedule 20.01.2014