54 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
			
		
		
	
	
			54 lines
		
	
	
		
			1.2 KiB
		
	
	
	
		
			Vue
		
	
	
	
	
	
| <template>
 | |
|   <section class="AiSprite" :ref="ref"/>
 | |
| </template>
 | |
| 
 | |
| <script>
 | |
| export default {
 | |
|   name: "AiSprite",
 | |
|   props: {
 | |
|     width: {default: 400},
 | |
|     height: {default: 300},
 | |
|     is3D: Boolean
 | |
|   },
 | |
|   data() {
 | |
|     return {
 | |
|       ref: ""
 | |
|     }
 | |
|   },
 | |
|   methods: {
 | |
|     init(count = 0) {
 | |
|       const container = this.$refs[this.ref]
 | |
|       if (container) {
 | |
|         let {width, height} = this.$props
 | |
|         const scene = new spritejs.Scene({container, width, height, ...this.$attrs}),
 | |
|             layer = scene.layer()
 | |
|         /**
 | |
|          * layer 图层
 | |
|          * lib spritejs的依赖库
 | |
|          */
 | |
|         this.$emit("init", {layer, lib: spritejs})
 | |
|       } else if (count == 20) {
 | |
|         console.log(this.$refs)
 | |
|       } else setTimeout(() => this.init(++count), 500)
 | |
|     }
 | |
|   },
 | |
|   created() {
 | |
|     this.ref = "AiSprite_" + new Date().getTime()
 | |
|   },
 | |
|   mounted() {
 | |
|     this.$injectLib("https://cdn.cunwuyun.cn/spritejs/spritejs.min.js", () => {
 | |
|       if (this.is3D) {
 | |
|         this.$injectLib("https://cdn.cunwuyun.cn/spritejs/sprite-extend-3d.js", () => {
 | |
|           this.init()
 | |
|         })
 | |
|       } else this.init()
 | |
|     })
 | |
|   }
 | |
| }
 | |
| </script>
 | |
| 
 | |
| <style lang="scss" scoped>
 | |
| .AiSprite {
 | |
| }
 | |
| </style>
 |