增加显示英雄出现前的光效
This commit is contained in:
parent
df56742ee7
commit
baf32f0dd3
56
src/components/main/HomeHero.vue
Normal file
56
src/components/main/HomeHero.vue
Normal file
@ -0,0 +1,56 @@
|
||||
<template>
|
||||
<div class="home_hero">
|
||||
<spine-view class="hero-anim" :data="data" ></spine-view>
|
||||
<spine-view class="effect-anim" :data="effectData" ></spine-view>
|
||||
</div>
|
||||
</template>
|
||||
|
||||
<script lang="ts">
|
||||
import { Component, Vue } from 'vue-property-decorator'
|
||||
import SpineView from '@/components/main/SpineView.vue'
|
||||
import { ISpineData } from '@/utils/SpineRender'
|
||||
declare module 'vue/types/vue' {
|
||||
interface Vue {
|
||||
data: ISpineData
|
||||
}
|
||||
}
|
||||
// TODO:: 光效果显示一段时间后, 在显示英雄
|
||||
@Component({
|
||||
name: 'HomeHero',
|
||||
props: ['data'],
|
||||
components: {
|
||||
SpineView
|
||||
}
|
||||
})
|
||||
export default class extends Vue {
|
||||
get effectData() {
|
||||
return {
|
||||
id: `effect_${this.data.id}`,
|
||||
skelName: 'guang_texiao',
|
||||
animName: 'animation',
|
||||
repeat: false
|
||||
}
|
||||
}
|
||||
}
|
||||
</script>
|
||||
|
||||
<style lang="scss" scoped>
|
||||
.home_hero{
|
||||
position: relative;
|
||||
}
|
||||
.hero-anim {
|
||||
width: 400px;
|
||||
height: 800px;
|
||||
margin-left: -90px;
|
||||
margin-right: -90px;
|
||||
}
|
||||
.effect-anim {
|
||||
left:0;
|
||||
top: 0;
|
||||
margin-left: -80px;
|
||||
margin-top: 50px;
|
||||
width: 400px;
|
||||
height: 800px;
|
||||
position: absolute;
|
||||
}
|
||||
</style>
|
@ -12,7 +12,7 @@
|
||||
</div>
|
||||
<div class="home_right_panel">
|
||||
<div class="spine-list">
|
||||
<spine-view class="hero-anim" v-for="hero in heros" :data="hero" :key="hero.id"></spine-view>
|
||||
<home-hero class="hero-anim" v-for="hero in heros" :data="hero" :key="hero.id"></home-hero>
|
||||
</div>
|
||||
</div>
|
||||
</section>
|
||||
@ -22,10 +22,12 @@
|
||||
import { Component, Vue } from 'vue-property-decorator'
|
||||
import SpineView from '@/components/main/SpineView.vue'
|
||||
import { ISpineData } from '@/utils/SpineRender'
|
||||
import HomeHero from '@/components/main/HomeHero.vue'
|
||||
|
||||
@Component({
|
||||
name: 'HomeSection',
|
||||
components: {
|
||||
HomeHero,
|
||||
SpineView
|
||||
|
||||
}
|
||||
|
@ -21,6 +21,7 @@ export class SpineRender {
|
||||
private shapes
|
||||
private assetManager
|
||||
private scale = 1.5
|
||||
private repeat = true
|
||||
|
||||
constructor(canvas: HTMLCanvasElement) {
|
||||
const config = { alpha: true }
|
||||
@ -46,6 +47,7 @@ export class SpineRender {
|
||||
init({ skelName, animName, scale, repeat }: ISpineData) {
|
||||
this.skelName = skelName
|
||||
this.animName = animName
|
||||
this.repeat = repeat
|
||||
this.scale = scale || this.scale
|
||||
// Create a simple shader, mesh, model-view-projection matrix and SkeletonRenderer.
|
||||
this.mvp.ortho2d(0, 0, this.canvas.width - 1, this.canvas.height - 1)
|
||||
@ -90,7 +92,7 @@ export class SpineRender {
|
||||
// Create an AnimationState, and set the initial animation in looping mode.
|
||||
const animationStateData = new spine.AnimationStateData(skeleton.data)
|
||||
const animationState = new spine.AnimationState(animationStateData)
|
||||
animationState.setAnimation(0, initialAnimation, true)
|
||||
animationState.setAnimation(0, initialAnimation, self.repeat)
|
||||
animationState.addListener({
|
||||
start: function(track: spine.TrackEntry) {
|
||||
console.log('Animation on track ' + track.trackIndex + ' started')
|
||||
|
Loading…
x
Reference in New Issue
Block a user