首页 > 其他分享 >使用Animate和CreateJS设计H5页面

使用Animate和CreateJS设计H5页面

时间:2023-06-09 16:46:26浏览次数:42  
标签:createjs H5 CreateJS var new Animate stage

Animate和CreateJS是常用于HTML5页面设计的工具,通过使用这些工具,可以创建各种动画特效,从而提高交互性和视觉效果。

  1. 游戏:Animate和CreateJS可以用于创建精彩的网页游戏,比如跑酷类、动作类、益智类等众多不同类型的游戏。这些游戏通常需要丰富的场景设计、角色设定、音效、背景音乐等元素,因此需要使用到更加复杂的交互逻辑。

  2. 3D模型展示:Animate和CreateJS还可用于创建3D模型的展示页面,如立体影像、3D建筑图、交互式产品展示等。在使用这种方式来呈现信息时,不仅需要针对页面进行npm安装相应的3D库包,同时还需要利用CreateJS的渲染引擎和相关API,实现逼真的视觉效果和细致深入的展示效果。

  3. 广告宣传:Animate和CreateJS也可以用于创建各种精美的广告宣传页面,例如品牌推广、商品促销、新品发布和客户分析报告等。使用这种方式设计的广告宣传页面更加生动、简洁、形象化,使得用户能够更好地了解和记得广告内容。

  4. 交互式教育:Animate和CreateJS还可以用于创建各种交互式的教育页面,比如培训课程、学术研究、科普解说等。通过设计交互性动画以及增强体验式展示,这些进步的教学工具有助于加速知识的传递,同时也能够更好地满足不同人群的学习需求。

总之,使用Animate和CreateJS可以为H5页面增加更多的视觉效果和交互功能,提高用户体验和互动性,同时也需要考虑技术实现难度和兼容性问题。因此,在设计复杂的案例时,需要谨慎选择技术,精细制作,并测试、验证其有效性,以确保达到预期效果并取得良好的结果。

以下是使用Animate和CreateJS创建的代码案例,可以通过这些示例了解具体的实现方法和应用技巧。需要注意的是,在使用这些代码时,应该根据实际需要进行适量的修改和定制,以达到最佳的用户体验效果。

游戏Demo

// 初始化舞台
var stage = new createjs.Stage("gameCanvas");

// 创建游戏精灵
var spriteSheet = new createjs.SpriteSheet({
    images: [img1, img2, img3], // 加载图片
    frames: {width:50, height:50}, // 精灵大小
    animations: {
        walk: [0, 5], 
        run: [6, 9], 
        jump: [10,13, "run"]
    }
});
var sprite = new createjs.Sprite(spriteSheet);

// 添加游戏精灵到舞台上
stage.addChild(sprite);
createjs.Ticker.framerate = 30;

// 更新游戏精灵状态
function tick(event) {
    if (sprite.currentAnimation != "run") {
        sprite.gotoAndPlay("run");
    }
    sprite.x += 10;
    stage.update(event);
}
createjs.Ticker.addEventListener("tick", tick);

雨天动画

// 初始化舞台
var stage = new createjs.Stage("canvas");

// 创建雨景效果对象
var rainShape = new createjs.Shape();
rainShape.graphics.bf(img).drawRect(0,0, canvas.width, canvas.height);

// 添加水滴到画布上
var dropsArr = [];
for (i=0; i<100; i++) {
    var drop = new createjs.Shape();
    drop.graphics.beginFill("white").drawCircle(0,0,3);
    drop.x = Math.random() * canvas.width;
    drop.y = Math.random() * canvas.height - canvas.height;
    dropsArr.push(drop);
    stage.addChild(drop);
}

// 动画更新
createjs.Ticker.addEventListener("tick", handleTick);
function handleTick(event) {
    for (i=0; i<dropsArr.length; i++) {
        dropsArr[i].y += 10;
        if (dropsArr[i].y > canvas.height) { dropsArr[i].y = -30 }
    }
    stage.update();
}

购物动画

// 初始化舞台
var stage, shoppingCartImage;
function init() {
    stage = new createjs.Stage("canvas");
    shoppingCartImage = new Image();
    shoppingCartImage.onload = handleImageLoad;
    shoppingCartImage.src = "shopping-cart.png";
}

// 图像加载完毕后,绘制购物车对象
function handleImageLoad(event) {
    var shoppingCartBitmap = new createjs.Bitmap(shoppingCartImage);
    stage.addChild(shoppingCartBitmap);

    // 监听鼠标移动事件
    createjs.Ticker.addEventListener("tick", handleMouseOver);
    function handleMouseOver(event) {
        var x = stage.mouseX;
        var y = stage.mouseY;
        if (x && y) {
            shoppingCartBitmap.x = x - 75;
            shoppingCartBitmap.y = y - 25;
            stage.update(event);
        }
    }
}

时钟效果

// 初始化舞台
var stage = new createjs.Stage("canvas");

// 创建表盘对象
var dial = new createjs.Shape();
dial.graphics.beginStroke("#FFF").drawCircle(75,75,70);
for (i=0; i<12; i++) {
    var angle = (i - 3) * (Math.PI * 2) / 12;
    var x2 = Math.cos(angle) * 60;
    var y2 = Math.sin(angle) * 60;
    var text = new createjs.Text(i+1, "20px Arial", "#FFF");
    text.textAlign = "center";
    text.textBaseline = "middle";
    text.x = x2 + 75;
    text.y = y2 + 75;
    dial.addChild(text);
}

// 添加指针对象
var armHour = new createjs.Shape();
armHour.graphics.setStrokeStyle(4).beginStroke("#FFF").moveTo(0,10).lineTo(0,-40);
armHour.x = 75;
armHour.y = 75;

var armMinute = new createjs.Shape();
armMinute.graphics.setStrokeStyle(3).beginStroke("#FFF").moveTo(0,10).lineTo(0,-60);
armMinute.x = 75;
armMinute.y = 75;

// 更新表针位置
function tick(event) {
    var date = new Date();
    var hours = date.getHours();
    var minutes = date.getMinutes();
    armHour.rotation = (hours % 12) * 30 + (minutes / 60) * 30;
    armMinute.rotation = minutes * 6;
    stage.update(event);
}
createjs.Ticker.addEventListener("tick", tick);

图片滑动展示

// 初始化舞台
var stage = new createjs.Stage("canvas");

// 加载图片资源
var queue = new createjs.LoadQueue();
queue.on("complete", handleComplete, this);
queue.loadManifest([
    {id: "img1", src:"img1.jpg"},
    {id: "img2", src:"img2.jpg"},
    {id: "img3", src:"img3.jpg"}
]);

// 创建滑动展示对象
function handleComplete() {
    var img1 = queue.getResult("img1");
    var img2 = queue.getResult("img2");
    var img3 = queue.getResult("img3");

    var slideShow = new createjs.Container();

    var slide1 = new createjs.Bitmap(img1);
    slideShow.addChild(slide1);

    var slide2 = new createjs.Bitmap(img2);
    slide2.x = img1.width + 20;
    slideShow.addChild(slide2);

    var slide3 = new createjs.Bitmap(img3);
    slide3.x = slide2.x + img2.width + 20;
    slideShow.addChild(slide3);

    stage.addChild(slideShow);

    // 创建轮播动画
    createjs.Ticker.addEventListener("tick", handleTick);

    var screenWidth = document.body.clientWidth;
    var totalWidth = slideShow.getBounds().width;

    function handleTick(event) {
        var dx = -10;
        slideShow.x += dx;
        if (slideShow.x < screenWidth - totalWidth - 100) {
            slideShow.x = screenWidth;
        }
        stage.update(event);
    }
}

音频可视化效果

// 初始化舞台
var stage = new createjs.Stage("canvas");

// 创建音频对象
var audio = document.createElement("audio");
audio.src = "audio.mp3";
audio.controls = "true";
document.body.appendChild(audio);

// 解析音频数据
var analyzer = createjs.WebAudioPlugin.getAnalyser(audio);
analyzer.setFFTSize(2048); // 频率区间大小
var bufferLength = analyzer.frequencyBinCount;
var dataArray = new Uint8Array(bufferLength);

// 创建音频可视化效果
var barHeight, barWidth, barX;
var numBars = 200;

for (var i=0; i<numBars; i++) {
    barWidth = stage.canvas.width / numBars - 2;
    barX = i * (barWidth+2) + 1;
    var bar = new createjs.Shape();
    stage.addChild(bar);
}

// 更新音频数据并生成动画效果
createjs.Ticker.addEventListener("tick", handleTick);
function handleTick(event) {
    analyzer.getByteFrequencyData(dataArray);
    for (i=0; i<numBars;i++) {
barHeight = dataArray[i] / 2;
var bar = stage.getChildAt(i);
bar.graphics.clear().beginFill("white").drawRect(barX, stage.canvas.height-barHeight, barWidth, barHeight);
}
stage.update(event);
}

 

标签:createjs,H5,CreateJS,var,new,Animate,stage
From: https://www.cnblogs.com/guangzhiruijie/p/17469610.html

相关文章

  • 陪玩圈子系统APP小程序H5,在你身边的第一桶金
    游戏陪玩系统的市场前景随着互联网的不断发展,电竞游戏行业也一直处在高风口,根据中国音数协电竞工委发布《2022年1-6月中国电子竞技产业报告》显示,中国电竞用户数量拥有4.87亿,这也为游戏陪玩这个行业带来了机遇。游戏陪玩系统功能介绍一般的游戏陪玩系统功能都有:游戏约单,多人语音聊......
  • CDH5.X完全卸载步骤
    //CDH5.X完全卸载步骤#bycoco#2015-01-141.关闭集群中的所有服务。 这个可以通过cloudermanger主页关闭集群。2.卸载[root@master~]#/usr/share/cmf/uninstall-cloudera-manager.sh [root@slave1~]#servicecloudera-sc......
  • CreateJS 动画 EaselJS 动画
    本节将介绍创建图形动画,精灵表位图动画,DOM元素动画.例子1图形动画<!DOCTYPEhtml><html><head> <metacharset="gbk"> <scripttype="text/javascript"src="easeljs-0.6.0.min.js"></script></head><body> &l......
  • 在前端生成H5二维码海报
    海报图片生成前后端都能实现,个人喜欢在前端生成,主要是前端可以用html+css去实现海报样式,便于调试,对于熟悉前端代码的小伙伴来说再好不过。以下是在vue项目中的实现,非vue前端同理。思路及步骤:1.用html实现海报效果制作海报模板图,用js二维码库生成二维码,用CSS的绝对定位实现二......
  • ch57x\ch58x开启仿真
    本次使用的平台是MounRiverStudio,使用的是WCH的CH582m与WCH-LinkE仿真之前确保LinkE处在Risc-V模式下 空闲时蓝灯常灭Step1:首先通过ISP工具开启两线仿真; Step2:点击下载选项会出来一个Debug的配置紧接着会出现再点击仿真开关即可。如果仍无法进入仿真:点击DebugCon......
  • CH58x\CH57x硬件SPI操作外部flash学习记录
    官方提供的58x的spi例程,spi主机模式下的发送方式有三种单字节发送,FIFO连续发送,DMA连续发送。本文分别对SPI0主机模式下三种发送模式进行使用。本次使用的是CH582m做为主机,W25Q64FV作为从机。一、单字节发送本次调试中实现对W25Q64FVflas进行读id,擦除,写入,读取。在进行主要操作......
  • 微信H5适配 解决微信调整字体大小导致Html5页面混乱
    最近开发公众号遇到一个问题:iOS、Android加载页面,如果用户调整了微信自带的字体大小,那么我们的页面就会跟随调整字体大小,导致页面错乱无法适配。所以希望能够禁止微信的字体放大功能。找了一些方法总结如下:原理:阻止ios和安卓调整字体大小时候的事件,ios通过添加css属性,安卓通过......
  • h5移动端页面调试工具Chii与 weinre 一样的远程调试工具
    与 weinre 一样的远程调试工具,主要是将webinspector替换为最新的 chromedevtoolsfrontend.电脑上跑一个chii服务,把对应的js嵌入h5页面内,用手机访问h5页面,chrome内看chii服务地址即可找到对应管理控制台  安装可以通过npm安装。npminstallchii-g 使用......
  • EasyCVR平台手机端H5页面系统名称过长导致显示异常的情况优化
    EasyCVR视频融合平台基于云边端协同架构,具有强大的数据接入、处理及分发能力,平台支持海量视频汇聚管理,可支持多协议接入,包括市场主流标准协议与厂家私有协议及SDK,如:国标GB28181、RTMP、RTSP/Onvif、海康Ehome、海康SDK、宇视SDK等。在测试中发现,EasyCVR平台手机端H5页面下,系统名......
  • EasyCVR平台手机端H5页面系统名称过长导致显示异常的情况优化
    EasyCVR视频融合平台基于云边端协同架构,具有强大的数据接入、处理及分发能力,平台支持海量视频汇聚管理,可支持多协议接入,包括市场主流标准协议与厂家私有协议及SDK,如:国标GB28181、RTMP、RTSP/Onvif、海康Ehome、海康SDK、宇视SDK等。在测试中发现,EasyCVR平台手机端H5页面下,系统名称......