- {/* 工具栏-列表形式切换 */}
-
-
{
- e.stopPropagation();
- handleToolChange(activeTool === "stretch" ? "right" : "left");
- }}
- >
-
-
-
- {/* 水滴动画 */}
-
-
-
-
-
-
+ //
+
+
+
+
+
+
+
+
+ );
+}
- {/* 屏风式视频布局 */}
+/** 首屏 */
+function HomeModule1() {
+ const router = useRouter();
+ return (
+
+
+
+
+ Ideas Become Movies
+
+
+ Next-Generation AI Movies Making Platform
+
+
+ From Ideas to Movies in just 5-10 minutes
+
router.push("/create")}
>
-
+ Early Access
+
-
- {/* 网格式视频布局 */}
-
-
-
-
-
-
- {
- e.stopPropagation();
- handleCreateProject();
- }}>
- {isCreating ? (
-
- ) : (
-
- )}
- {isCreating ? "Action..." : "Action"}
-
-
-
-
);
}
+/**核心价值 */
+function HomeModule2() {
+ return (
+
+
+
+ Just Give Us Your Ideas
+
+
+ Input your idea in one sentence and MovieFlow will bring
+
+
+ your creativity to life
+
+
+
+
+
+
+ );
+}
+/**案例展示 */
+function HomeModule3() {
+ const videoList = [
+ [
+ "/assets/show (1).mp4",
+ "/assets/show (2).mp4",
+ "/assets/show (3).mp4",
+ "/assets/show (4).mp4",
+ "/assets/show (5).mp4",
+ ],
+ [
+ "/assets/show (6).mp4",
+ "/assets/show (7).mp4",
+ "/assets/show (8).mp4",
+ "/assets/show (9).mp4",
+ "/assets/show (10).mp4",
+ ],
+ [
+ "/assets/show (11).mp4",
+ "/assets/show (12).mp4",
+ "/assets/show (13).mp4",
+ "/assets/show (14).mp4",
+ "/assets/show (15).mp4",
+ ],
+ ];
+
+ // 定义内容样式
+ const contentStyle: React.CSSProperties = {
+ height: "100%",
+ lineHeight: "10rem",
+ textAlign: "center",
+ background: "#364d79",
+ };
+
+ return (
+
+
+
+ Create Anything
+
+
+ MovieFlow can make any kind of film in high quality for you
+
+
+ {/* 3x3网格布局 */}
+
+ {/* 上方阴影遮罩 - 覆盖整个宽度包括padding */}
+
+
+ {/* 下方阴影遮罩 - 覆盖整个宽度包括padding */}
+
+
+ {videoList.map((column, columnIndex) => (
+
+
+ {column.map((video, videoIndex) => (
+
+
+
+
+ ))}
+
+
+ ))}
+
+
+ );
+}
+/**电影制作工序介绍 */
+function HomeModule4() {
+ const [activeTab, setActiveTab] = useState(0);
+
+ const processSteps = [
+ {
+ title: "Pre-Production",
+ description:
+ "Developing the story, writing the script, securing funding, assembling the crew, and planning the shoot.",
+ },
+ {
+ title: "Production",
+ description:
+ "Developing the story, writing the script, securing funding, assembling the crew, and planning the shoot.",
+ },
+ {
+ title: "Visual Effects",
+ description:
+ "Developing the story, writing the script, securing funding, assembling the crew, and planning the shoot.",
+ },
+ {
+ title: "Voice",
+ description:
+ "Developing the story, writing the script, securing funding, assembling the crew, and planning the shoot.",
+ },
+ ];
+
+ const handleTabClick = (index: number) => {
+ setActiveTab(index);
+ };
+
+ return (
+
+
+
+ Edit like you think
+
+
+
+
+ {/* 左侧四个切换tab */}
+
+ {processSteps.map((step, index) => (
+
handleTabClick(index)}
+ className={`w-[31.75rem] h-[10.5rem] rounded-lg cursor-pointer transition-all duration-300 border ${
+ activeTab === index
+ ? "bg-[#262626] border-white/20 hover:border-white/40"
+ : "bg-black border-white/10 hover:border-white/40"
+ }`}
+ >
+
+
+ {step.title}
+
+
+ {step.description}
+
+
+
+ ))}
+
+
+ {/* 右侧视频播放区域 */}
+
+
+
+ );
+}
+/**价格方案 */
+function HomeModule5() {
+ const [billingType, setBillingType] = useState<"monthly" | "yearly">(
+ "monthly"
+ );
+
+ const pricingPlans = [
+ {
+ title: "Plus",
+ price: billingType === "monthly" ? 28 : 24,
+ credits: "1x Boost, 10 Credits",
+ buttonText: "Choose Plus",
+ features: [
+ "10 Credits",
+ "50 Video mins + 95 iStock",
+ "2 UGC product asset ads",
+ "30 secs of generative video",
+ "2 express clones",
+ "3 users, 100GB storage",
+ "Unlimited exports",
+ ],
+ },
+ {
+ title: "Max",
+ price: billingType === "monthly" ? 50 : 43,
+ credits: "1x Boost, 40 Credits",
+ buttonText: "Choose Max",
+ features: [
+ "40 Credits",
+ "50 Video mins + 95 iStock",
+ "2 UGC product asset ads",
+ "30 secs of generative video",
+ "2 express clones",
+ "3 users, 100GB storage",
+ "Unlimited exports",
+ ],
+ },
+ {
+ title: "Generative",
+ price: billingType === "monthly" ? 100 : 85,
+ credits: "1x Boost, 100 Credits",
+ buttonText: "Choose Generative",
+ features: [
+ "100 Credits",
+ "50 Video mins + 95 iStock",
+ "2 UGC product asset ads",
+ "30 secs of generative video",
+ "2 express clones",
+ "3 users, 100GB storage",
+ "Unlimited exports",
+ ],
+ },
+ {
+ title: "Team",
+ price: billingType === "monthly" ? 899 : 764,
+ credits: "1x Boost, 1000 Credits",
+ buttonText: "Choose Team",
+ features: [
+ "1000 Credits",
+ "50 Video mins + 95 iStock",
+ "2 UGC product asset ads",
+ "30 secs of generative video",
+ "2 express clones",
+ "3 users, 100GB storage",
+ "Unlimited exports",
+ ],
+ },
+ ];
+
+ return (
+
+
+
+ Start Creating
+
+
+ {/* 计费切换 */}
+
+
+
+
+
+
+ {/* 主要价格卡片 */}
+
+ {pricingPlans.map((plan, index) => (
+
+
+ {plan.title}
+
+
+
+ ${plan.price}
+
+ /month
+
+
+ {plan.credits}
+
+
+
+ * Billed monthly until cancelled
+
+
+ {plan.features.map((feature, featureIndex) => (
+ -
+ ✓
+ {feature}
+
+ ))}
+
+
+ ))}
+
+
+ {/* 额外价格卡片 */}
+
+
+
+ Free
+
+
+ $0
+
+
+ 10 Video mins and 1 AI credit per week, 1 Express avatar, 4 Exports
+ per week with invideo watermark.
+
+
+ No access to generative features.
+
+
+
+
+
+
+ Enterprise
+
+
Custom
+
+ Custom solutions for large organizations. Advanced security and
+ flexible pricing based on your needs.
+
+
+ on your needs.
+
+
+
+
+
+ );
+}
+
+function HomeModule6() {
+ return (
+
+ © 2025 MovieFlow. All rights reserved.
+
+ );
+}
diff --git a/package-lock.json b/package-lock.json
index 3733755..e710872 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -102,7 +102,7 @@
"remark-gfm": "^4.0.1",
"sonner": "^1.5.0",
"styled-components": "^6.1.19",
- "swiper": "^11.2.8",
+ "swiper": "^11.2.10",
"tailwind-merge": "^2.6.0",
"tailwindcss": "3.3.3",
"tailwindcss-animate": "^1.0.7",
@@ -19470,7 +19470,7 @@
},
"node_modules/swiper": {
"version": "11.2.10",
- "resolved": "https://registry.npmmirror.com/swiper/-/swiper-11.2.10.tgz",
+ "resolved": "https://registry.npmjs.org/swiper/-/swiper-11.2.10.tgz",
"integrity": "sha512-RMeVUUjTQH+6N3ckimK93oxz6Sn5la4aDlgPzB+rBrG/smPdCTicXyhxa+woIpopz+jewEloiEE3lKo1h9w2YQ==",
"funding": [
{
diff --git a/package.json b/package.json
index 7795696..f35775f 100644
--- a/package.json
+++ b/package.json
@@ -105,7 +105,7 @@
"remark-gfm": "^4.0.1",
"sonner": "^1.5.0",
"styled-components": "^6.1.19",
- "swiper": "^11.2.8",
+ "swiper": "^11.2.10",
"tailwind-merge": "^2.6.0",
"tailwindcss": "3.3.3",
"tailwindcss-animate": "^1.0.7",
diff --git a/public/assets/1.mp4 b/public/assets/1.mp4
new file mode 100644
index 0000000..29055c0
Binary files /dev/null and b/public/assets/1.mp4 differ
diff --git a/public/assets/home.mp4 b/public/assets/home.mp4
new file mode 100644
index 0000000..72f55ee
Binary files /dev/null and b/public/assets/home.mp4 differ
diff --git a/public/assets/show (1).mp4 b/public/assets/show (1).mp4
new file mode 100644
index 0000000..09591d0
Binary files /dev/null and b/public/assets/show (1).mp4 differ
diff --git a/public/assets/show (10).mp4 b/public/assets/show (10).mp4
new file mode 100644
index 0000000..0d75d46
Binary files /dev/null and b/public/assets/show (10).mp4 differ
diff --git a/public/assets/show (11).mp4 b/public/assets/show (11).mp4
new file mode 100644
index 0000000..f4b8c76
Binary files /dev/null and b/public/assets/show (11).mp4 differ
diff --git a/public/assets/show (12).mp4 b/public/assets/show (12).mp4
new file mode 100644
index 0000000..4278bf9
Binary files /dev/null and b/public/assets/show (12).mp4 differ
diff --git a/public/assets/show (13).mp4 b/public/assets/show (13).mp4
new file mode 100644
index 0000000..f1e75ed
Binary files /dev/null and b/public/assets/show (13).mp4 differ
diff --git a/public/assets/show (14).mp4 b/public/assets/show (14).mp4
new file mode 100644
index 0000000..a9ea12c
Binary files /dev/null and b/public/assets/show (14).mp4 differ
diff --git a/public/assets/show (15).mp4 b/public/assets/show (15).mp4
new file mode 100644
index 0000000..e6005ab
Binary files /dev/null and b/public/assets/show (15).mp4 differ
diff --git a/public/assets/show (2).mp4 b/public/assets/show (2).mp4
new file mode 100644
index 0000000..7577ef8
Binary files /dev/null and b/public/assets/show (2).mp4 differ
diff --git a/public/assets/show (3).mp4 b/public/assets/show (3).mp4
new file mode 100644
index 0000000..2dc6d83
Binary files /dev/null and b/public/assets/show (3).mp4 differ
diff --git a/public/assets/show (4).mp4 b/public/assets/show (4).mp4
new file mode 100644
index 0000000..5c261f2
Binary files /dev/null and b/public/assets/show (4).mp4 differ
diff --git a/public/assets/show (5).mp4 b/public/assets/show (5).mp4
new file mode 100644
index 0000000..8239c1d
Binary files /dev/null and b/public/assets/show (5).mp4 differ
diff --git a/public/assets/show (6).mp4 b/public/assets/show (6).mp4
new file mode 100644
index 0000000..ca2ef90
Binary files /dev/null and b/public/assets/show (6).mp4 differ
diff --git a/public/assets/show (7).mp4 b/public/assets/show (7).mp4
new file mode 100644
index 0000000..1bb8400
Binary files /dev/null and b/public/assets/show (7).mp4 differ
diff --git a/public/assets/show (8).mp4 b/public/assets/show (8).mp4
new file mode 100644
index 0000000..914faaa
Binary files /dev/null and b/public/assets/show (8).mp4 differ
diff --git a/public/assets/show (9).mp4 b/public/assets/show (9).mp4
new file mode 100644
index 0000000..07f259e
Binary files /dev/null and b/public/assets/show (9).mp4 differ
diff --git a/utils/tools.ts b/utils/tools.ts
index b02e595..444a947 100644
--- a/utils/tools.ts
+++ b/utils/tools.ts
@@ -45,7 +45,6 @@ export function createScreenAdapter(): void {
// 获取当前窗口尺寸
const currentWidth = window.innerWidth;
const currentHeight = window.innerHeight;
-
// 计算缩放比例 (1920x1080)
const wScale = currentWidth / 1920;
const hScale = currentHeight / 1080;
@@ -56,7 +55,10 @@ export function createScreenAdapter(): void {
console.error("未找到app节点");
return;
}
-
+ (window as any).Scale = {
+ wScale,
+ hScale,
+ };
// 创建样式元素
const style = document.createElement("style");