theaterjs使用

news2024/9/23 7:22:57
import theaterJS from "theaterjs";
interface ITheaterOptions {
	autoplay?: boolean;
	minSpeed?: {
		type: number;
		erase: number;
	};
	maxSpeed?: {
		type: number;
		erase: number;
	};
}
export default function useTheater(id: string, options: ITheaterOptions, addSceneOptions: any[]) {
	//1,初始化一个theaterJS对象
	const theater = theaterJS(options);
	//2,将演员添加到选角中。
	theater.addActor(id, { speed: 0.8, accuracy: 0.6 });
	//3,将场景添加到场景中,options.autoplay为true,则播放场景。
	addSceneOptions.forEach(item => {
		theater.addScene(item);
	});
	theater.addScene(theater.replay.bind(theater));
	//4,添加在发出事件时执行的回调( ( 当场景开始/结束时、) )。
	//效果是当打字(type)和删除(erase)开始时,显示光标
	//当打字(type)和删除(erase)结束时,移除光标。
	//当vader打字(type)时,
	theater
		.on("type:start, erase:start", function () {
			theater.getCurrentActor().$element?.classList!.add("actor__content--typing");
		})
		.on("type:end, erase:end", function () {
			theater.getCurrentActor().$element?.classList!.remove("actor__content--typing");
		});
	// 	.on("type:start, erase:start", function () {
	// 		if (theater.getCurrentActor().name === id) {
	// 			document.body.classList.add("dark");
	// 		} else {
	// 			document.body.classList.remove("dark");
	// 		}
	// 	});
	return { theater };
}

<div class="actor">
				<div class="actor__prefix" @click="handleOnFocus">Search for your domain name...</div>
				<div v-show="!isClick" id="vader" type="text" class="actor__content" data-focus-visible="" @click="handleOnFocus"></div>
				<a-input
					v-show="isClick"
					id="vader-input"
					ref="searchContentRef"
					v-model="searchContent"
					class="actor__input"
					allow-clear
					@blur="handleOnBlur"
				/>
				<a-button type="primary" class="w-98px" @click="handleSearch">Search</a-button>
			</div>
const addScenes = [
	["vader:Start typing...", 800],
	[
		"vader:youridea.com",
		800,
		-8,
		"circle.net",
		800,
		-10,
		"version.org",
		800,
		-11,
		"brandnew.site",
		800,
		-13,
		"world.online",
		800,
		-12,
		"business.ca",
		1000
	]
];
const isClick = ref(false);
const searchContentRef = ref();
const searchContent = ref("");
const handleOnFocus = () => {
	isClick.value = true;
	nextTick(() => {
		searchContentRef.value.focus();
	});
};
const handleOnBlur = () => {
	if (searchContent.value === "") {
		isClick.value = false;
	}
};
const handleSearch = () => {
	console.log("searchContent", searchContent.value);
};
watch(searchContent, val => {
	if (val.length <= 0) {
		isClick.value = false;
		searchContent.value = "";
	} else {
		isClick.value = true;
	}
});
useTheater("vader", { autoplay: true }, addScenes);
.actor {
			@apply absolute left-0 px-5vw flex flex-col;
			top: 40%;
			&__prefix {
				@apply text-[#919091];
			}
			&__input {
				@apply border-none bg-transparent h-69px   pl-0;
				:deep(.arco-input) {
					color: #fff;
					font-size: 3rem;
					@apply font-700;
					&:focus {
						outline: none;
					}
				}
			}
			&__content {
				font-size: 3rem;
				@apply font-700 bg-transparent  text-color-placeholder-1;
			}
			.actor__content--typing::after {
				//添加打字和删除时的光标
				content: "|";
				animation: blink 500ms infinite;
			}
		}

在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1989925.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

变压器耦合放大器(低频应用+高频应用)

2024-8-7&#xff0c;星期三&#xff0c;22:49&#xff0c;天气&#xff1a;晴&#xff0c;心情&#xff1a;晴。下班抽出点时间看看书&#xff0c;话不多说&#xff0c;学习开始啦。 今日继续学习模电自选教材的第六章&#xff0c;多级放大器、RF放大器和功率放大器。主要学习…

【Linux】进程概念—环境变量

目录 一、冯诺依曼体系结构 二、操作系统(Operator System) 1 .概念 2 .设计OS的目的 3 . 定位 4 . 系统调用和库函数概念 三、进程 1 .基本概念 2 .描述进程-PCB&#xff08;process control block&#xff09;进程控制块 3 . 组织进程 4 . 查看进程 5 .通过系统调用获取进程…

【iMSTK】第一期 imstk配置过程

很高兴在雪易的CSDN遇见你 VTK技术爱好者 QQ&#xff1a;870202403 公众号&#xff1a;VTK忠粉 前言 本文分享imstk的配置和使用过程&#xff0c;希望对各位小伙伴有所帮助&#xff01; 感谢各位小伙伴的点赞关注&#xff0c;小易会继续努力分享&#xff0c;一起进步&…

man手册安装

1.什么是man手册 &#xff08;输入man man) linux系统提供的有关函数或指令介绍的相关帮助手册&#xff0c;可以在该手册也中查看函数、指令功能&#xff0c;说白了就是相关操作说明书&#xff0c;一共有七章&#xff0c;主要使用前三章&#xff0c;第一章是shell指令相关说明…

TPS和QPS达到多少才算高并发?

&#x1f49d;&#x1f49d;&#x1f49d;欢迎莅临我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐&#xff1a;「storm…

操作系统 IO 相关知识

操作系统 IO 相关知识 阻塞与非阻塞同步与异步IO 和系统调用传统的 IODMAmmap 内存映射sendfilesplice 常用的 IO 模型BIO&#xff1a;同步阻塞 IONIO&#xff1a;同步非阻塞 IOIO 多路复用信号驱动 IOAIO&#xff1a;异步 IO 模型 IO 就是计算机内部与外部进行数据传输的过程&…

【Python系列】pathlib模块

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

C语言项目——贪吃蛇,为什么用curses,定义上下左右

在Linux系统中&#xff0c;使用ncurses在程序编译时还要加上 -lcurses 即&#xff1a;gcc cursedemo.c -lcurses #include<curses.h> int main() {initscr(); //ncurse界面的初始化函数printw("This is a curses window.\n");//再ncurse模式下的printfgetc…

【代码随想录训练营第42期 Day22打卡 回溯Part1 - LeetCode 77. 组合 216.组合总和III 17.电话号码的字母组合

目录 一、做题心得 二、回溯基础知识 1.定义 2.适用问题 3.一个思想 4.代码实现 三、题目与题解 题目一&#xff1a;77. 组合 题目链接 题解&#xff1a;回溯 题目二&#xff1a;216.组合总和III 题目链接 题解&#xff1a;回溯 题目三&#xff1a;17.电话号码的字…

企元数智百年营销史的精粹:借鉴历史创造未来商机

随着时代的发展和科技的进步&#xff0c;传统营销方式正在经历前所未有的颠覆和改变。在这个数字化时代&#xff0c;企业需要不断创新&#xff0c;同时借鉴百年营销史的精粹&#xff0c;汲取历史经验&#xff0c;创造未来商机。而"企元数智"作为现代营销的代表&#…

骑行激情,燃动巴黎——维乐Angel Revo坐垫,赋能你的奥运梦想!

当奥林匹克圣火在塞纳河畔熊熊燃烧&#xff0c;巴黎的街头巷尾都弥漫着骑行的激情。2024年的夏天&#xff0c;自行车赛道上&#xff0c;每一圈轮毂的转动都凝聚着运动员的汗水与荣耀。金牌赛程已定&#xff0c;女子公路自行车决赛于7月27日20:30鸣枪&#xff0c;男子紧随其后&a…

【Nuxt】编写接口和全局状态共享

编写接口 ~/server/api/homeInfo.get.ts export default defineEventHandler((event) > {return {code: 200,data: {name: hello world}} })服务端有一些方法可以快速获取请求常见字段&#xff1a; getQuery(event)getMethod(event)await readBody(event)await readRawBo…

配置Cuttlefish 虚拟 Android 设备

google 参考资料&#xff1a; https://source.android.com/docs/setup/start?hlzh-cn https://source.android.com/docs/devices/cuttlefish/get-started?hlzh-cn Cuttlefish 开始 验证 KVM 可用性 Cuttlefish 是一种虚拟设备&#xff0c;依赖于宿主机上可用的虚拟化。 …

鸿蒙Harmony开发:通用焦点样式事件规范

基础概念 焦点、焦点链和走焦 焦点&#xff1a;指向当前应用界面上唯一的一个可交互元素&#xff0c;当用户使用键盘、电视遥控器、车机摇杆/旋钮等非指向性输入设备与应用程序进行间接交互时&#xff0c;基于焦点的导航和交互是重要的输入手段。焦点链&#xff1a;在应用的组…

Docker安装teslamate

要求 Docker&#xff08;如果不熟悉 Docker&#xff0c;请参阅安装 Docker 和 Docker Compose&#xff09;一台始终开启的机器&#xff0c;因此 TeslaMate 可以持续获取数据计算机上至少有 1 GB 的 RAM 才能成功安装。外部互联网访问&#xff0c;与 tesla.com 交谈 创建一个名…

【数据结构】队列篇

文章目录 1.队列1.1 队列的概念及结构 2. 队列的实现2.1 准备工作2.2 队列的初始化2.3 队尾入队列2.4 队头出队列2.5 获取队列头部元素2.6 获取队列队尾元素2.7 获取队列有效元素个数2.8 检测队列是否为空2.9 销毁队列 3. 代码整合 1.队列 1.1 队列的概念及结构 队列&#xff…

黑马Java零基础视频教程精华部分_15_基本查找/顺序查找、二分查找/折半查找、插值查找、斐波那契查找、分块查找、哈希查找

系列文章目录 文章目录 系列文章目录一、基本查找/顺序查找核心思想&#xff1a;从0索引开始挨个往后查找代码&#xff1a;练习&#xff1a;定义一个方法利用基本查找&#xff0c;查询某个元素在数组中的索引&#xff0c;数组包含重复数据。 二、二分查找/折半查找核心思想:属于…

LVS多模式集群攻略!

NAT模式下的lvs集群 lvs-nat概念&#xff1a;修改请求报文的目标IP,多目标IP的DNAT&#xff0c;本质是多目标IP的DNAT&#xff0c;通过将请求报文中的目标地址和目标端口修改为某挑出的RS的RIP和PORT实现转发 最终实现效果&#xff1a; 1.Director 服务器采用双网卡&#xff…

Qt入门(二):第一个Qt项目

新建项目 打开Qt Creator&#xff0c;新建项目&#xff0c;然后一路next 到这一步baseclass有三种选择&#xff1a; QMainWindow&#xff1a;主窗口基类&#xff0c;相较于QWidget&#xff0c;多了菜单栏等杂七杂八的东西。QWidget&#xff1a;最基础的窗口基类&#xff0…

编译运行 Byconity

我的系统是centos&#xff0c;因此用他们的docker编译并用他们的docker-compose运行&#xff0c;以下流程亲测可跑&#xff1a; 拉取并编译 https://github.com/ByConity/ByConity/tree/master/docker/debian/dev-env 运行 https://github.com/ByConity/ByConity/blob/master/d…