当前位置: 首页 > news >正文

14.Three.js 中的 SpotLight(聚光灯)详解与 Vue3 实战示例

在 Three.js 中,SpotLight(聚光灯)是一种能沿着一个方向发射锥形光束的光源,广泛应用于舞台灯光、聚焦灯、手电筒等模拟场景中。本文将详细介绍 SpotLight 的各个属性和使用方法,并提供一个基于 Vue3 + Composition API 的完整示例帮助理解。


一、SpotLight 基本介绍

1. 创建方式

const spotLight = new THREE.SpotLight(0xffffff, 1); 
scene.add(spotLight);

构造函数参数:

new THREE.SpotLight(color?: ColorRepresentation, intensity?: number, distance?: number, angle?: number, penumbra?: number, decay?: number
)

2. 常用属性解释

属性名作用描述
color光的颜色
intensity光照强度
distance光照最远距离(0表示无限远)
angle聚光灯锥形角度,单位弧度(0 ~ Math.PI/2)
penumbra半影范围(0~1)边缘柔和度
decay衰减系数(默认为 1)
target聚光灯照射目标(默认是 (0,0,0),可设置为任意 Object3D)
castShadow是否投射阴影
shadow光源阴影设置对象(分辨率、模糊度等)


二、SpotLight 相关方法与注意事项

1. 设置光源位置和目标

spotLight.position.set(10, 10, 10); 
spotLight.target.position.set(0, 0, 0); 
scene.add(spotLight.target); // 一定要添加 target

2. 控制阴影效果

spotLight.castShadow = true; 
spotLight.shadow.mapSize.width = 1024; 
spotLight.shadow.mapSize.height = 1024; 
spotLight.shadow.camera.near = 0.5; 
spotLight.shadow.camera.far = 500; 
spotLight.shadow.camera.fov = 30;

3. Helper 可视化工具

const spotLightHelper = new THREE.SpotLightHelper(spotLight); 
scene.add(spotLightHelper); 
// 若动态更新光源参数,需手动调用 update spotLightHelper.update();

三、完整的 SpotLight 示例(非 Vue)

const scene = new THREE.Scene(); 
const light = new THREE.SpotLight(0xffffff, 1, 100, Math.PI / 6, 0.2, 2); light.position.set(10, 20, 10); 
light.castShadow = true; 
scene.add(light); 
light.target.position.set(0, 0, 0); 
scene.add(light.target); 
const helper = new THREE.SpotLightHelper(light); 
scene.add(helper);

四、基于 Vue 3 + Composition API 的 SpotLight 案例

✅ 技术栈

  • Vue 3 + Vite

  • Three.js 0.167.2

  • Composition API + onMounted 生命周期控制

✅ 效果预览

  • 聚光灯照射一个立方体,带阴影

  • 支持窗口自适应

  • 可视化 Helper 显示光照范围

📦 示例组件代码

<!-- SpotLightScene.vue -->
<template><div ref="container" class="w-full h-full"></div>
</template><script setup lang="ts">
import * as THREE from 'three'
import { onMounted, ref } from 'vue'const container = ref<HTMLDivElement | null>(null)onMounted(() => {const scene = new THREE.Scene()const camera = new THREE.PerspectiveCamera(75, window.innerWidth / window.innerHeight, 0.1, 1000)camera.position.set(10, 10, 10)camera.lookAt(0, 0, 0)const renderer = new THREE.WebGLRenderer({ antialias: true })renderer.setSize(window.innerWidth, window.innerHeight)renderer.shadowMap.enabled = truecontainer.value?.appendChild(renderer.domElement)// 地板const plane = new THREE.Mesh(new THREE.PlaneGeometry(200, 200),new THREE.MeshStandardMaterial({ color: 0x999999 }))plane.rotation.x = -Math.PI / 2plane.receiveShadow = truescene.add(plane)// 立方体const cube = new THREE.Mesh(new THREE.BoxGeometry(2, 2, 2),new THREE.MeshStandardMaterial({ color: 0x00aaff }))cube.position.y = 1cube.castShadow = truescene.add(cube)// SpotLightconst spotLight = new THREE.SpotLight(0xffffff, 1, 100, Math.PI / 6, 0.2, 2)spotLight.position.set(10, 15, 10)spotLight.castShadow = truespotLight.shadow.mapSize.set(1024, 1024)spotLight.shadow.camera.near = 1spotLight.shadow.camera.far = 100scene.add(spotLight)// SpotLight TargetspotLight.target.position.set(0, 0, 0)scene.add(spotLight.target)// Helperconst spotHelper = new THREE.SpotLightHelper(spotLight)scene.add(spotHelper)// 环境光scene.add(new THREE.AmbientLight(0x404040))// 渲染循环const animate = () => {requestAnimationFrame(animate)renderer.render(scene, camera)spotHelper.update()}animate()// 自适应window.addEventListener('resize', () => {camera.aspect = window.innerWidth / window.innerHeightcamera.updateProjectionMatrix()renderer.setSize(window.innerWidth, window.innerHeight)})
})
</script><style scoped>
html, body, #app {margin: 0;padding: 0;width: 100%;height: 100%;
}
</style>

五、SpotLight 常见问题与调试技巧

  1. 光线没有照射到目标?

    • 检查 target 是否设置并添加到场景中

    • 检查 angle 是否过小

  2. 阴影效果不明显?

    • 调整 shadow.mapSize 提高分辨率

    • 调整 shadow.camera.nearfar 范围

    • 设置 castShadowreceiveShadow 正确

  3. 目标改变位置后光线不更新?

    • 使用 SpotLightHelper.update() 来强制刷新辅助器


六、结语

Three.js 中的 SpotLight 是一个强大而灵活的光源类型,掌握其属性配置与使用技巧对提升 3D 场景表现力至关重要。希望本文的详细讲解和 Vue 示例能帮你更深入地理解它的使用方式。


如果你觉得文章对你有帮助,欢迎点赞、收藏、评论支持!我也会持续分享更多 Three.js 与 Vue 的实战干货 🎉

相关文章:

14.Three.js 中的 SpotLight(聚光灯)详解与 Vue3 实战示例

在 Three.js 中&#xff0c;SpotLight&#xff08;聚光灯&#xff09;是一种能沿着一个方向发射锥形光束的光源&#xff0c;广泛应用于舞台灯光、聚焦灯、手电筒等模拟场景中。本文将详细介绍 SpotLight 的各个属性和使用方法&#xff0c;并提供一个基于 Vue3 Composition API…...

unix 详解

Unix 系统深度解析 一、Unix 起源与历史 Unix 是由 贝尔实验室&#xff08;AT&T Bell Labs&#xff09; 的 肯汤普森&#xff08;Ken Thompson&#xff09; 和 丹尼斯里奇&#xff08;Dennis Ritchie&#xff09; 于 1969 年 开发的操作系统。其诞生背景是&#xff1a; …...

NetSuite 常用类型Item对应Account异同

NetSuite中会有多种类型不同的Item&#xff0c;在期初数据收集的时候我们一般也会让用户提供给我们Item的主数据信息&#xff0c;其中就包含科目部分&#xff0c;但不同类型Item对应科目不完全相同&#xff0c;所以就想帮助自己和各位一起来梳理一下相关内容。 一般我们常用It…...

CentOS配置了镜像源之后依旧下载元数据失败

// 切换到root用户 su root备份原有的镜像源 sudo mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup使用阿里云镜像源 sudo wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo这是清华的…...

mybatis 的多表查询

文章目录 多表查询一对一一对多 多表查询 一对一 开启代码片段编写 专注于 SQL的 编写 JDBC 的写法&#xff0c;注重于 SQL mybatis 在 一对一查询时&#xff0c;核心在于 建立每个表对应的实体类主键根据 主键 id 进行查询&#xff0c;副标根据 设定外键进行查询 在 SQL编写…...

面试常问系列(一)-神经网络参数初始化-之自注意力机制为什么除以根号d而不是2*根号d或者3*根号d

首先先罗列几个参考文章&#xff0c;大家之后可以去看看&#xff0c;加深理解&#xff1a; 面试常问系列(一)-神经网络参数初始化面试常问系列(一)-神经网络参数初始化之自注意力机制_注意力机制的参数初始化怎么做-CSDN博客面试常问系列(一)-神经网络参数初始化-之-softmax-C…...

Linux服务之nginx中http设置及虚拟主机搭建

目录 一.http相关概述 1.mime 2.server下的listen及root 2.1 listen 2.2 root 3.alias别名 4.location相关概述 4.1 语法规则初步解释 5.access模块 6.验证模块 6.1 htpasswd 7.自定义错误页面 8.虚拟主机搭建 &#xff08;yum安装&#xff09; 一.http相关概述 h…...

android-ndk开发(7): 从库文件反推ndk版本

android-ndk开发(7): 从库文件反推ndk版本 2025/05/06 1. 概要 对于动态库&#xff0c; 有些能用 parse_elfnote.py 提取&#xff0c;有些不能。 对于静态库&#xff0c; 不能用 parse_elfnote.py 提取&#xff1b; 对于 libopencv_core.a, 可以搜索关键字 General configu…...

MySQL8查询某个JSON类型的字段中出现过的所有键名(json key name)并去重返回

假设我有一张表叫 t1, 其中有一个字段 info 是 JSON类型&#xff0c;现在我想查询 t1.info 字段中出现过的所有键名&#xff0c;MySQL提供了一个函数 JSON_KEYS(column) 来返回单条数据单个JSON字段中的所有键名组成的集合&#xff0c;那我想查询整个表所有记录中某个JSON字段出…...

【AI】基于生活案例的LLM强化学习(入门帖)

一、从“教小孩说话”到“教模型说话”&#xff1a;LLM 训练全貌 1. 先打个比方 第一阶段&#xff1a;预训练 就好比教一个小孩先“读很多书”&#xff0c;让他获得基本的语言能力。对 LLM 来说&#xff0c;就是在海量文本上进行“预测下一个词”的训练&#xff0c;从而学到“…...

如何通过代理 IP 实现异地直播推流

在直播行业日益火爆的今天&#xff0c;许多主播希望突破地域限制&#xff0c;实现异地直播推流&#xff0c;以获得更广泛的观众群体和更好的直播效果。代理 IP 作为一种有效的网络工具&#xff0c;能够帮助主播轻松达成这一目标。本文将详细介绍如何通过代理 IP 实现异地直播推…...

Linux 网络编程 day5 多路IO转接之改进select and poll

三种多路IO转接方法&#xff1a;select &#xff0c; poll &#xff0c; epoll 改进select多路IO转接&#xff0c;使用数组来保存含有需要连接的套接字cfd&#xff0c;不用循环至1024&#xff0c;节约时间提高效率。 #include<stdio.h> #include<stdlib.h> #in…...

【iOS】源码阅读(二)——NSObject的alloc源码

文章目录 前言问题发现探索NSObject的alloc源码实现流程探索NSObject为什么直接走objc_alloc&#xff0c;而GGObject先走alloc总结 前言 前面笔者已经学习了alloc相关源码&#xff0c;之前的alloc底层源码实现步骤是以GGObject为基础的&#xff0c;今天我们来探索一下NSObject中…...

如何在短时间内高效复习食品安全员考试?

以下是一些在短时间内高效复习食品安全员考试的方法&#xff1a; 制定科学计划&#xff1a;根据剩余时间和考试内容&#xff0c;将备考时间划分为基础学习、强化巩固和模拟冲刺三个阶段。如基础学习阶段可安排每天学习 2-3 小时&#xff0c;梳理教材知识&#xff1b;强化巩固阶…...

Kotlin空安全解决Android NPE问题

在 Android 开发中,NullPointerException(NPE)一直是最常见的崩溃类型之一。Kotlin 通过创新的空安全机制,在语言层面彻底解决了这一问题。以下是 Kotlin 空安全的核心要点和实战指南: 一、Kotlin 空安全设计哲学 编译期防御:通过类型系统强制区分可空(?)与非空类型显…...

PrimExpr 与 RelayExpr 的区别

PrimExpr 与 RelayExpr 的区别解析 在 TVM 的表达式系统中&#xff0c;PrimExpr 和 RelayExpr 是两种不同层级的表达式类型&#xff0c;分别服务于 TVM 的不同编译阶段和目标场景。以下是它们的核心区别和关联&#xff1a; 1. 设计目标与层级 特性PrimExprRelayExpr所属层级TV…...

R语言助力森林生态研究:从数据处理到群落稳定性分析的完整流程,结合机器学习与案例写作

在生态学研究中&#xff0c;森林生态系统的结构、功能与稳定性是核心研究内容之一。这些方面不仅关系到森林动态变化和物种多样性&#xff0c;还直接影响森林提供的生态服务功能及其应对环境变化的能力。 &#x1f449; 森林生态系统的结构、功能与稳定性是生态学研究的核心。…...

android-ndk开发(8): ndk 和 clang 版本对照表

android-ndk开发(8): ndk 和 clang 版本对照表 2025/05/06 1. 概要 android-ndk 是基于 clang 的编译工具链。 当 clang 自身的版本变更导致了普通用户的编译、链接报错时&#xff0c; 用户可能只关注到了 ndk 版本&#xff0c; 导致问题的分析浮于表面。 android-ndk 官方…...

《AI大模型应知应会100篇》第50篇:大模型应用的持续集成与部署(CI/CD)实践

第50篇&#xff1a;大模型应用的持续集成与部署&#xff08;CI/CD&#xff09;实践 &#x1f9fe; 摘要 在AI大模型开发中&#xff0c;随着模型版本迭代频繁、依赖复杂、部署环境多样&#xff0c;构建一套高效可靠的持续集成与持续交付&#xff08;CI/CD&#xff09;流程显得尤…...

Python基于Django的在线考试系统【附源码、文档说明】

博主介绍&#xff1a;✌Java老徐、7年大厂程序员经历。全网粉丝12w、csdn博客专家、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域和毕业项目实战✌ &#x1f345;文末获取源码联系&#x1f345; &#x1f447;&#x1f3fb; 精彩专栏推荐订阅&#x1f447;&…...

windows操作系统开机自启(自动启动) 运行窗口 shell:startup 指令调出开机自启文件夹

打开 “运行” 窗口&#xff0c;输入 shell:startup 把需要开机自启程序的快捷启动方式复制到启动文件夹 &#xff08;注意&#xff1a;一定要复制快捷启动方式&#xff0c;可以右键启动的文件&#xff0c;发送到桌面快捷方式&#xff0c;如果直接把启动的文件放进去&#xff…...

笔记本外接显示器检测不到hdmi信号

原因:AMD显卡驱动挂了。 其他 异常特征:显示亮度被禁用,无法调整。 修复步骤: ① ②点击更新驱动程序...

论软件的可靠性设计

目录 摘要(300~330字) 正文(2000~2500字,2200字为宜) 背景介绍(500字做左右) 论点论据(1500字做左右)...

【Linux】基础开发工具

L i n u x Linux Linux 环境下的开发工具非常丰富&#xff0c;是程序员和开发人员进行高效开发的必备基础。 L i n u x Linux Linux 环境下的开发工具主要包括 y u m yum yum 软件包管理器、 v i m vim vim 文本编辑器、 g c c / g gcc/g gcc/g 编译器、 g d b gdb gdb 调试工…...

【编程干货】本地用 Ollama + LLaMA 3 实现 Model Context Protocol(MCP)对话服务

模型上下文协议&#xff08;MCP&#xff09;本身提供的是一套标准化的通信规则和接口&#xff0c;简化了客户端应用的开发。 MCP 实际上是一套规范&#xff0c;官方把整套协议分成「传输层 协议层 功能层」三大块&#xff0c;并对初始化握手、能力协商、数据/工具暴露、安全…...

华为策略路由

路由策略&#xff1a;是对路由条目进行控制&#xff0c;通告控制路由条目影响报文的转发路径。路由策略为控制平面。 策略路由&#xff1a;是根据报文特征&#xff0c;认为的控制报文从某个即可转发出去&#xff0c;不修改路由表。即策略路由为在转发平面。 路由策略 策略路由…...

Spring Boot3 实现定时任务 每10分钟执行一次,同时要解决分布式的问题 区分不同场景

在Spring Boot 3中实现分布式定时任务&#xff0c;确保多实例环境下任务仅执行一次&#xff0c;可以采用以下方案&#xff1a; 方案一&#xff1a;Redis分布式锁&#xff08;推荐&#xff09; import org.springframework.data.redis.core.StringRedisTemplate; import org.sp…...

山东大学项目实训-创新实训-法律文书专家系统-项目报告(四)

项目简介 法律文书专家系统是一个 Web 应用&#xff0c;提供法律文书摘要提取、法律预测报告生成和法律考试问题答疑三大核心功能。用户需要登录或注册后&#xff0c;进入主页面选择所需功能&#xff0c;进行相应的操作。 用户群体 律师&#xff1a;需要快速提取法律文书摘要…...

sqli-labs靶场通关保姆级教学(Get传输篇)Less-1Less-10

sqli-labs靶场通关保姆级教学&#xff08;Get传输篇&#xff09;Less-1~Less-10&#xff08;纯手注&#xff09; sqli - labs 靶场是一个专门用于网络安全学习和测试 SQL 注入漏洞的开源靶场。包含报错盲注、布尔盲注、基于联合查询的 SQL 注入等多种类型的 SQL 注入漏洞&…...

Day17 聚类算法(K-Means、DBSCAN、层次聚类)

一、聚类算法 1. K-Means 聚类 原理&#xff1a;K-Means 是一种基于划分的聚类算法&#xff0c;目标是将 n n n 个样本划分到 k k k 个簇中&#xff0c;使得簇内样本的相似度尽可能高&#xff0c;簇间样本的相似度尽可能低。算法通过迭代的方式&#xff0c;不断更新簇的质心…...

构建 Web 浏览 AI Agent:Pydantic + MCP 实现指南

在当今快节奏的数字世界中,高效地从网站提取和总结信息可以成为改变游戏规则的利器。大型语言模型(LLM)提供了令人难以置信的能力,但它们本身并不知道如何浏览网络或获取实时内容。 本文演示如何创建一个由Python驱动的AI Agent,它能够阅读和总结网站内容,使其成为研究人员…...

解决 pnpm dev 运行报错的坎坷历程

解决 pnpm dev 运行报错的坎坷历程 在项目开发过程中&#xff0c; 在clone完别人的代码后启动项目时&#xff1a;nodejs 和 pnpm版本都没问题 &#xff0c;但是 无法运行 pnpm dev 命令启动项目时&#xff0c;往往会遇到各种各样的报错问题。最近在处理 yudao-ui-admin-vue3 项…...

从贴牌到品牌:出海官网如何让中国制造“贵”起来?

在全球经济一体化的当下&#xff0c;中美关税战如同一记重锤&#xff0c;给国际贸易格局带来了巨大震荡。自贸易摩擦爆发以来&#xff0c;双方多次调整关税政策&#xff0c;涉及的商品种类不断增多&#xff0c;税率持续攀升&#xff0c;众多中国企业的出口业务遭受重创&#xf…...

ultralytics框架进行RT-DETR目标检测训练

自DETR提出以来&#xff0c;其采用匈牙利匹配方式真正的实现了端到端检测效果&#xff0c;避免了NMS等后处理过程&#xff0c;同时&#xff0c;相较CNN的局部特征提取&#xff0c;其凭借着Transformer强大的全局特征提取能力&#xff0c;在目标检测领域可谓大杀四方&#xff0c…...

SQLite基本函数

目录 1 核心函数和聚合函数 1.1 核心函数 1.2 聚合函数 2 字符串函数 3 日期和时间函数 4 数学函数 5 JSON函数 (SQLite 3.9.0) 6 窗口函数 (SQLite 3.25.0) 7 加密和安全函数 8 其他实用函数 9 C#代码示例&#xff1a;使用SQLite函数 9.1 准备工作 9.2 代码实现…...

使用Java和LangChain4j实现人工智能:从分类到生成式AI

人工智能&#xff08;AI&#xff09;从科幻小说中的梦想逐步演变为现实&#xff0c;驱动了从语音助手到自动驾驶汽车的各种应用。AI 的发展主要基于两种方法&#xff1a;基于编码的传统方法和基于机器学习的现代方法。机器学习通过神经网络和大量训练数据实现分类、生成等任务&…...

数据分析指标体系

目录 1. 构建业务公式&#xff0c;用量化逻辑串联业务 1.1 明确公式结果 1.2 拆解业务过程 1.3 构建计算关系&#xff08;yaxb&#xff09; 经典的成交额业务公式 小疑问&#xff1a; 如何让自己的指标看起来更专业&#xff1f; 量化业务过程的量化&#xff0c;到底是什…...

分布式、高并发-Day04

以下是 Day 4 详细学习内容&#xff08;CAS 与原子操作实战&#xff0c;30 分钟完整计划&#xff09;&#xff0c;包含原理解析、分步代码实战和性能对比&#xff1a; &#x1f4d6; 今日学习目标 掌握 CAS&#xff08;Compare-And-Swap&#xff09;无锁算法的核心原理学会使…...

计算机中的逻辑运算

目录 一、总览 二、详情 1. 基本逻辑运算&#xff08;与、或、非&#xff09;&#xff1a; 2. 其他常用的逻辑运算&#xff08;异或、同或、与非、或非&#xff09;&#xff1a; 在计算机中&#xff0c;逻辑运算是构成数字电路和计算机程序基础的关键操作。它们处理的是真值…...

Dify - Stable Diffusion

Stable Diffusion 是一种基于文本提示生成图像的工具&#xff0c;Dify 已经实现了访问 Stable Diffusion WebUI API 的接口&#xff0c;因此你可以直接在 Dify 中使用它。以下是在 Dify 中集成 Stable Diffusion 的步骤。 1. 初始化本地环境 推荐使用装有较强 GPU 的机器来安…...

weapp-vite - 微信小程序工具链的另一种选择

weapp-vite - 微信小程序工具链的另一种选择 前言 weapp-vite 是由 笔者 icebreaker 开发的一个基于 vite 的现代化微信小程序开发工具链。我给它设定的目标初心是: 为小程序开发者带来笑容。 自从在 2024 年的 8 月正式发布之后&#xff0c;到现在也过了将近 9 个月的时间。…...

图形化编程重塑 IoT 边缘开发:技术革新与生态竞合新范式

本文以图形化编程技术为核心&#xff0c;深度剖析其在 IoT 边缘开发中的创新应用与行业变革。通过对传统开发困局的系统解构&#xff0c;结合 iVX 项目等典型案例&#xff0c;揭示图形化编程如何通过可视化逻辑设计、自动代码生成及 AI 驱动架构&#xff0c;实现开发效率与应用…...

node-sass安装失败解决方案

1、python环境问题 Error: Cant find Python executable "python", you can set the PYTHON env variable. 提示找不到python2.7版本&#xff0c; 方法一&#xff1a;可安装一个python2.7或引用其他已安装的python2.7 通过设置环境变量可以解决&#xff1b; 方法二&…...

PDF内容搜索--支持跨文件夹多文件、组合词搜索

平时我们接触到的PDF文档特别多&#xff0c;需要对PDF文档做一些处理&#xff0c;那么今天给大家带来的这两个软件非常的棒&#xff0c;可以帮你提升处理文档的效率。 PDF内容搜索 快速检索 我用夸克网盘分享了「PDF搜索PDF 转长图.zip」&#xff0c;点击链接即可保存。打开「…...

我用cursor 搭建了临时邮箱服务-Temp Mail 365

用业余时间搭建了一个临时邮箱&#xff0c;对于后端程序员出身的我&#xff0c;对前端了解的不太多&#xff0c;有了cursor的帮助&#xff0c;补齐了自己的短板&#xff0c;搭建了这个服务&#xff0c;下面对临时邮箱架构设计与安全性做一个分析。 https://temp-mail-365.com 临…...

RN学习笔记 ✅

太无聊了最近&#xff0c;找点事做&#xff0c;学一下RN丰富一下技术栈&#x1fae1;。但是开发APP除了RN&#xff0c;还有一种选择就是WebView&#xff0c;但是基于WebView的APP的性能被普遍认为不如RN&#xff0c;因为WebView本质上是一个容器&#xff0c;用于在应用中嵌入网…...

使用原生 CSS 实现轮播

提示:记录工作中遇到的需求及解决办法 文章目录 前言一、核心新特性1. ::scroll-button()2. ::scroll-marker()二、基础实现步骤1. 创建滚动容器2. 添加滚动按钮3. 集成滚动标记三、高级功能1. 滚动驱动动画2. 状态查询3. 响应式布局四、展示前言 最新!原生CSS也可以实现轮播…...

C语言进阶—函数(static,递归,回调,指针,内联,变参,结构体尺寸)

目录 一 static函数 1. static变量 1.静态局部变量 2.静态全局变量 2. static函数 二 递归函数 三 指针函数&函数指针 1. 指针函数 2. 函数指针 四 回调函数 五 内联函数 1. 核心特性表 2. 优缺点分析表 3. 用场景建议 3.1 推荐使用场景 3.2 应避免场景 六…...

碰一碰发视频源码搭建的定制化开发实践

在数字化营销与信息交互的浪潮中&#xff0c;碰一碰发视频技术以其便捷性和高效性&#xff0c;成为吸引用户的重要手段。然而&#xff0c;通用的碰一碰发视频系统往往难以满足企业多样化的业务需求。通过对源码进行定制化开发&#xff0c;可以打造出契合特定场景的专属系统。本…...

代码mark:脚本获取包含全角字符的字符串的长度

脚本获取包含全角字符的字符串的长度 function myLen(s) { var r 0; for (var i 0; i < s.length; i) { var c s.charCodeAt(i); // Shift_JIS: 0x0 &#xff5e; 0x80, 0xa0 , 0xa1 &#xff5e; 0xdf , 0xfd &#xff5e; 0xff // Unicode : 0x0 &…...