Мне удалось создать индикатор выполнения, в котором я использовал queue.on("прогресс", handleProgress); для изменения шкалаX мувиклипа, который я назвал bar_mc.
var queue = new createjs.LoadQueue();
queue.on("complete", handleComplete);
queue.on("progress", handleProgress);
queue.loadFile({
id: "img",
src: "images/image.jpg"
});
function handleComplete(evt) {
console.info("Done!");
createjs.Ticker.removeAllEventListeners();
};
function handleProgress(event) {
console.info("Event Loading: " + (queue.progress.toFixed(2) * 100) + "%");
};
createjs.Ticker.addEventListener("tick", handleTick.bind(this));
function handleTick(event) {
console.info("ticking");
this.bar_mc.scaleX = queue.progress;
};
Это работает, но начинается в центре, как в а):
Как сделать так, чтобы он начинался сбоку, как в б)?
Кроме того, это дало мне ошибку, когда я попробовал, но есть ли способ поместить this.bar_mc.scaleX в функция handleProgress (событие) вместо использования отдельной функции тикера для анимации bar_mc?
Обновлять: Я уверен, что это можно сделать с помощью кода, но я не знаю, как это сделать. Все, что мне нужно было сделать, это изменить точку преобразования в Animate:
Теперь bar_mc масштабируется сбоку!
Обновление 2: Использовал информацию Мухаммеда Маруфа о "fileprogress" и изменил код. Теперь он выглядит чище без использования отдельного тикера для масштабирования bar_mc.
Добавление вар кореньдо к кодам очередь.на позволило мне добавить root.bar_mc.scaleX в функция handleProgress (событие) без необходимости изменять «прогресс»:
var root = this;
root.bar_mc.scaleX = 0;
var queue = new createjs.LoadQueue();
queue.on("complete", handleComplete);
queue.on("progress", handleProgress);
queue.loadFile({
id: "img",
src: "images/image.jpg"
});
function handleComplete(evt) {
console.info("Done!");
// do other stuff
};
function handleProgress(event) {
console.info("Event Loading: " + (queue.progress.toFixed(2) * 100) + "%");
root.bar_mc.scaleX = queue.progress;
};
Перед публикацией я пытался часами искать, как это закодировать, но не нашел ничего полезного. Только когда я прочитал сообщение на дискуссионном форуме Adobe Animate о том, как установить ширину и высоту символа на сцене, я случайно нашел точку преобразования. Надеюсь, этот вопрос поможет другим новичкам, таким как я. :)
Вот как я обновил код. Обратите внимание, что я использовал «fileload» вместо «complete» и «fileprogress» вместо «progress».
var root = this;
root.bar_mc.scaleX = 0;
var source = "https://loremflickr.com/cache/resized/65535_49259263438_7e86e005b3_h_1280_960_nofilter.jpg?" + Math.random();
var queue = new createjs.LoadQueue();
queue.on("fileload", handleComplete);
queue.on("fileprogress", handleProgress);
queue.loadFile({
id: "img",
src: source
});
function handleComplete(evt) {
console.info("Done!");
console.info(queue.progress);
root.bar_mc.scaleX = queue.progress;
};
function handleProgress(event) {
console.info("Event Loading: " + (queue.progress.toFixed(2) * 100) + "%, " + queue.progress);
root.bar_mc.scaleX = queue.progress;
};
Интересный. Когда я отредактировал код таким образом, «завершение» и «прогресс» начали работать правильно. Значит что-то не так с кодом. Вы можете использовать его двумя способами.
О, ты прав! Я думаю, что наличие var root до того, как коды queue.on заставили его работать. Раньше я добавлял var root внизу после всех queue.on, что выдавало мне ошибки.
похоже, вы отвечаете на свой вопрос менее чем за 1 час ... может быть, это не стоит вопроса