mirror of
https://github.com/artiemis/artie.moe.git
synced 2026-02-14 09:01:55 +00:00
switch from svelte to vue for model
This commit is contained in:
parent
54dba567df
commit
2c04aeaf87
@ -1,10 +1,9 @@
|
|||||||
import { defineConfig } from "astro/config";
|
import { defineConfig } from "astro/config";
|
||||||
import tailwind from "@astrojs/tailwind";
|
import tailwind from "@astrojs/tailwind";
|
||||||
import svelte from "@astrojs/svelte";
|
import vue from "@astrojs/vue";
|
||||||
import icon from "astro-icon";
|
import icon from "astro-icon";
|
||||||
|
|
||||||
// https://astro.build/config
|
|
||||||
export default defineConfig({
|
export default defineConfig({
|
||||||
integrations: [tailwind(), svelte(), icon()],
|
integrations: [tailwind(), vue(), icon()],
|
||||||
compressHTML: false,
|
compressHTML: false,
|
||||||
});
|
});
|
||||||
|
|||||||
@ -10,15 +10,15 @@
|
|||||||
"astro": "astro"
|
"astro": "astro"
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
"@astrojs/svelte": "^5.7.2",
|
|
||||||
"@astrojs/tailwind": "^5.1.2",
|
"@astrojs/tailwind": "^5.1.2",
|
||||||
|
"@astrojs/vue": "^4.5.2",
|
||||||
"@iconify-json/simple-icons": "^1.2.9",
|
"@iconify-json/simple-icons": "^1.2.9",
|
||||||
"astro": "^4.16.7",
|
"astro": "^4.16.7",
|
||||||
"astro-icon": "^1.1.1",
|
"astro-icon": "^1.1.1",
|
||||||
"pixi-live2d-display": "^0.4.0",
|
"pixi-live2d-display": "^0.4.0",
|
||||||
"pixi.js": "^6.5.10",
|
"pixi.js": "^6.5.10",
|
||||||
"svelte": "^4.2.19",
|
"tailwindcss": "^3.4.14",
|
||||||
"tailwindcss": "^3.4.14"
|
"vue": "^3.5.12"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
"@catppuccin/tailwindcss": "^0.1.6"
|
"@catppuccin/tailwindcss": "^0.1.6"
|
||||||
|
|||||||
935
pnpm-lock.yaml
generated
935
pnpm-lock.yaml
generated
File diff suppressed because it is too large
Load Diff
@ -17,7 +17,7 @@ import { Icon } from "astro-icon/components";
|
|||||||
>
|
>
|
||||||
<img
|
<img
|
||||||
class="pointer-events-none"
|
class="pointer-events-none"
|
||||||
src="https://lanyard.cnrad.dev/api/134306884617371648?hideDiscrim=true&showDisplayName=true&bg=1e2030"
|
src="https://lanyard.cnrad.dev/api/134306884617371648?showDisplayName=true&bg=1e2030&borderRadius=15px&hideActivity=whenNotUsed"
|
||||||
alt="Discord Presence"
|
alt="Discord Presence"
|
||||||
/>
|
/>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
@ -1,14 +1,16 @@
|
|||||||
<script lang="ts">
|
<script setup lang="ts">
|
||||||
import * as PIXI from "pixi.js";
|
import * as PIXI from "pixi.js";
|
||||||
import {
|
import {
|
||||||
Live2DModel,
|
Live2DModel,
|
||||||
MotionPreloadStrategy,
|
MotionPreloadStrategy,
|
||||||
MotionPriority,
|
MotionPriority,
|
||||||
} from "pixi-live2d-display";
|
} from "pixi-live2d-display";
|
||||||
import { onDestroy, onMount } from "svelte";
|
|
||||||
import { reZeroModels } from "../utils/constants";
|
import { reZeroModels } from "../utils/constants";
|
||||||
|
import { onMounted, onUnmounted, ref, useTemplateRef } from "vue";
|
||||||
|
|
||||||
|
const canvas = useTemplateRef<HTMLCanvasElement>("canvas");
|
||||||
|
const isLoaded = ref(false);
|
||||||
|
|
||||||
let canvas: HTMLCanvasElement;
|
|
||||||
let app: PIXI.Application;
|
let app: PIXI.Application;
|
||||||
let model: Live2DModel;
|
let model: Live2DModel;
|
||||||
|
|
||||||
@ -33,10 +35,10 @@
|
|||||||
return choices[Math.floor(Math.random() * choices.length)];
|
return choices[Math.floor(Math.random() * choices.length)];
|
||||||
}
|
}
|
||||||
|
|
||||||
onMount(async () => {
|
onMounted(async () => {
|
||||||
(window as any).PIXI = PIXI;
|
(window as any).PIXI = PIXI;
|
||||||
app = new PIXI.Application({
|
app = new PIXI.Application({
|
||||||
view: canvas,
|
view: canvas.value,
|
||||||
autoStart: true,
|
autoStart: true,
|
||||||
backgroundAlpha: 0,
|
backgroundAlpha: 0,
|
||||||
width: 900,
|
width: 900,
|
||||||
@ -51,8 +53,7 @@
|
|||||||
);
|
);
|
||||||
|
|
||||||
app.stage.on("childAdded", () => {
|
app.stage.on("childAdded", () => {
|
||||||
canvas.style.opacity = "1";
|
isLoaded.value = true;
|
||||||
canvas.style.cursor = "pointer";
|
|
||||||
});
|
});
|
||||||
app.stage.addChild(model as unknown as PIXI.DisplayObject);
|
app.stage.addChild(model as unknown as PIXI.DisplayObject);
|
||||||
|
|
||||||
@ -72,14 +73,13 @@
|
|||||||
model.y = 0;
|
model.y = 0;
|
||||||
});
|
});
|
||||||
|
|
||||||
onDestroy(() => {
|
onUnmounted(() => {
|
||||||
app.destroy(false);
|
app.destroy(false);
|
||||||
});
|
});
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<canvas
|
<template>
|
||||||
bind:this={canvas}
|
<canvas ref="canvas" id="live2d" @pointerdown="model.motion('Tap')"
|
||||||
on:pointerdown={() => model.motion("Tap")}
|
class="left-0 bottom-0 fixed lg:w-96 w-44 transition-opacity"
|
||||||
id="live2d"
|
:class="[isLoaded ? 'opacity-1' : 'opacity-0', { '!cursor-pointer': isLoaded }]" />
|
||||||
class="cursor-pointer left-0 bottom-0 fixed lg:w-96 w-44 opacity-0 transition-opacity"
|
</template>
|
||||||
/>
|
|
||||||
@ -3,7 +3,7 @@ import Layout from "../layouts/Layout.astro";
|
|||||||
import Prompt from "../components/Prompt.astro";
|
import Prompt from "../components/Prompt.astro";
|
||||||
import Centerpiece from "../components/Centerpiece.astro";
|
import Centerpiece from "../components/Centerpiece.astro";
|
||||||
import Icons from "../components/Icons.astro";
|
import Icons from "../components/Icons.astro";
|
||||||
import Model from "../components/Model.svelte";
|
import Model from "../components/Model.vue";
|
||||||
---
|
---
|
||||||
|
|
||||||
<Layout title="artie">
|
<Layout title="artie">
|
||||||
@ -13,5 +13,5 @@ import Model from "../components/Model.svelte";
|
|||||||
|
|
||||||
<script is:inline src="/vendors/live2dcubismcore.min.js"></script>
|
<script is:inline src="/vendors/live2dcubismcore.min.js"></script>
|
||||||
<script is:inline src="/vendors/live2d.min.js"></script>
|
<script is:inline src="/vendors/live2d.min.js"></script>
|
||||||
<Model client:only="svelte" />
|
<Model client:only="vue" />
|
||||||
</Layout>
|
</Layout>
|
||||||
|
|||||||
@ -1,5 +0,0 @@
|
|||||||
import { vitePreprocess } from '@astrojs/svelte';
|
|
||||||
|
|
||||||
export default {
|
|
||||||
preprocess: vitePreprocess(),
|
|
||||||
};
|
|
||||||
Loading…
x
Reference in New Issue
Block a user