货无忧
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 

69 lines
1.8 KiB

function show(newValue, oldValue, ownerInstance) {
if (newValue === true && oldValue === false) {
createAnimation('enter', ownerInstance)
} else if (newValue === false && oldValue === true) {
createAnimation('leave', ownerInstance)
}
}
function createAnimation(type, ownerInstance) {
if (type === 'enter') {
ownerInstance.requestAnimationFrame(function () {
enterAnimation(ownerInstance)
})
} else {
ownerInstance.requestAnimationFrame(function () {
leaveAnimation(ownerInstance)
})
}
}
function enterAnimation(ownerInstance, index = 0) {
if (index === 0) {
ownerInstance.callMethod('enter')
index += 1
ownerInstance.requestAnimationFrame(function () {
enterAnimation(ownerInstance, index)
})
} else if (index === 1) {
ownerInstance.callMethod('doEnter')
index += 1
ownerInstance.requestAnimationFrame(function () {
enterAnimation(ownerInstance, index)
})
} else if (index === 4) {
ownerInstance.callMethod('doEnterTo')
} else if (index < 4) {
index += 1
ownerInstance.requestAnimationFrame(function () {
enterAnimation(ownerInstance, index)
})
}
}
function leaveAnimation(ownerInstance, index = 0) {
if (index === 0) {
ownerInstance.callMethod('leave')
index += 1
ownerInstance.requestAnimationFrame(function () {
leaveAnimation(ownerInstance, index)
})
} else if (index === 1) {
ownerInstance.callMethod('doLeave')
index += 1
ownerInstance.requestAnimationFrame(function () {
leaveAnimation(ownerInstance, index)
})
} else if (index === 2) {
ownerInstance.callMethod('doLeaveTo')
} else if (index < 2) {
index += 1
ownerInstance.requestAnimationFrame(function () {
leaveAnimation(ownerInstance, index)
})
}
}
export default {
show
}