這一章是作好一鏡到底
最關鍵的一課,打開vscode,確保文件夾和文件的結構跟我本地是否一致,而後開始live-server啓動vscode本地服務器。json
這一步就至關於flash按鍵盤的ctrl+n,設置了舞臺寬度爲1344,高度爲750
let app = new PIXI.Application({width: 1344, height: 750});
複製代碼
這一步至關於flash,導入了素材
const loader = new PIXI.loaders.Loader();
loader.add('bg1', 'imgs/bg1.jpg')
......
複製代碼
target.progress會根據上面圖片的多少真實的實現loading效果,返回0~100的小數,而後須要用parseInt()格式化整數。
loader.on("progress", function(target, resource) { //加載進度
console.log(target.progress+"%")
});
複製代碼
loader.once('complete', function(target, resource) { //加載完成
document.body.appendChild(app.view)
//初始化場景
initScenes();
//初始化精靈
initSprites();
//初始化動畫
initAnimation();
}
loader.load(); // 開始加載資源
================================================================
這句話document.body.appendChild(app.view)寫完,才能夠顯示舞臺
這句話loader.load()寫完,才能夠監聽到加載進度;
complete事件中,完成咱們一鏡到底要完成的事情
複製代碼
const scenesOptions = [ // 場景數據:定義每一個場景的寬高,x/y距離
{
name:"scene1",
x:1000,y:0,
width:3554,height:750
},
{
name:"scene2",
x:1000,y:0,
width:3554,height:750
}
.....
];
================================================================
name:就是場景的名字
x,y就是它初始化的位置
width,height就是設計稿場景1的寬度和高度
複製代碼
const scenes = {}; // 場景集合 - pixi對象
function initScenes(){ // 初始化場景
for (let i = scenesOptions.length-1; i >= 0 ; i--) {
scenes[scenesOptions[i].name] = new PIXI.Container({
width:scenesOptions[i].width,
height:scenesOptions[i].height
});
scenes[scenesOptions[i].name].x = scenesOptions[i].x;
app.stage.addChild(scenes[scenesOptions[i].name]);
}
}
=========================================================
這句話若是不封裝,其實很好理解就是這麼幾句話
const scenes = {};
scenes.scene1 = new PIXI.Container({
width:1344,
height:750
});
scenes.scene1.x = 0;
app.stage.addChild(scenes.scene1);把場景添加到舞臺
複製代碼
const spritesOptions = [
{// 第一個場景的精靈
bg1:{
position:{x:0,y:0}
},
{
...
}
},
{// 第二個場景的精靈
bg1:{
position:{x:0,y:0}
},
{
...
}
}
]
複製代碼
function initSprites(){ // new出全部精靈對象,並交給函數initSprite分別賦值
for (let i = 0; i < spritesOptions.length; i++) {
let obj = spritesOptions[i];
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
sprites[key] = PIXI.Sprite.fromImage(key);
initSprite(sprites[key],obj[key],i+1);
}
}
}
initSpecialProp();
}
function initSprite(sprite,prop,i){ // 初始化單個精靈的屬性並加入對應的場景中
for (let key in prop) {
if (prop.hasOwnProperty(key)) {
sprite[key] = prop[key];
}
}
scenes['scene'+i].addChild(sprite);
}
=========================================================
這句話若是不封裝,其實很好理解就是這麼幾句話
sprites.bg1 = PIXI.Sprite.fromImage('bg1');
bg1.position.x = 0;
bg1.position.y = 0;
scenes.scenes1.addChild('bg1');把精靈給到場景
複製代碼
const animationsOptions = { // 精靈動畫集合
jzLeft:[{
delay:0,
duration:0.11,
to:{x:600,y:200,ease:Power0.easeNone}
}],
jzRight:[{
delay:0,
duration:0.11,
to:{x:1746,y:200,ease:Power0.easeNone}
}]
}
複製代碼
function initAnimation(){
// delay=0.1 表示滾動到10%開始播放動畫
// duration=0.1 表示運動時間佔滾動的百分比
for (let key in animationsOptions) {
if (animationsOptions.hasOwnProperty(key)) {
let obj = animationsOptions[key];
for (let i = 0; i < obj.length; i++) {
let act;
let target;
if (obj[i].prop) {
target = sprites[key][obj[i].prop];
} else {
target = sprites[key];
}
if(obj[i].from & obj[i].to){
act = TweenMax.fromTo(target,obj[i].duration,obj[i].from,obj[i].to);
} else if (obj[i].from) {
act = TweenMax.from(target,obj[i].duration,obj[i].from);
}else if (obj[i].to) {
act = TweenMax.to(target,obj[i].duration,obj[i].to);
}
let tm = new TimelineMax({delay:obj[i].delay});
tm.add(act,0);
tm.play();
timeline.add(tm,0);
}
}
}
}
===================================================================
let act;
let tm;
act = TweenMax.to(scenes.scene1,0.11,{x:2400})
tm = new TimelineMax({delay:0});
tm.add(act,0);
tm.play();
timeline.add(tm,0);
複製代碼
到這裏就結束啦,下一章解決橫豎適配問題,在下一章分享如何經過滑動結合時間控制動畫。bash