雪碧图的使用

<!DOCTYPE html>
<html lang="en">

<head>
    <meta http-equiv="content-Type" content="text/html; charset=utf-8" />
    <meta name="viewport" content="width=device-width,initial-scale=1,user-scalable=no,minimal-ui" />
    <meta name="apple-mobile-web-app-status-bar-style" content="black" />
    <meta name="format-detection" content="telephone=no" />
    <title> Sprite Sheet Animation</title>
    <style>
        body {
            font-size: 12px;
        }

        section {
            width: 500px;
            text-align: center;
        }

        /* star */
        .star {
            /* 如果为横向的雪碧图 则 height 为图片分辨率的高,反之若为纵向雪碧图 则 width 为图片分辨率的宽*/
            /* 这里为横向图  1800*60  所以height:60px ,宽的话随意设定只要能把图片显示出来都是可以的*/
            width: 60px;
            height: 60px;
            box-shadow: 0 0 5px 0 #939393;
            /*这些都是为了显眼设置 不是必须的  */
            margin: 10px auto;
            /*这些都是为了显眼设置 不是必须的  */
            background: url(./image/stars.png);
        }

        @keyframes star {
            0% {
                background-position: 0;
            }

            100% {
             /*这里的1740是用分辨率的宽高相减得到 */
                background-position: -1740px;
            }

            /* to {background-position:100%;} */
        }

        #starcss {
            /*star是keyframes动画名称   第一个时间是完成动画花费的时间第二是延迟多少秒开始动画  然后是无限循环,normal是正常顺序播放 (reverse为反向)*/
            animation: star 2000ms steps(29, end) 0ms infinite normal;
            /* 这个动画中的 steps(29, end)   29指的是雪碧图里面图与图的间隔,必须为正整数,必选,把动画分割的段数, 即 a.b.c(a|b|c) 之中有两个点(或者|),分为两段*/
              /* 用css 需要知道间段数 :29 */
        }

        /* 地鼠 */
        .ds {
            width: 400px;
            height: 430px;
            margin: 10px auto;
            background: url(./image/Mouse.png);
            background-size: auto 100%;  //  这个在适配里面很重要 ··············································**
        }

        @keyframes mouse {
            from {
                background-position: 0;
            }

            to {
              /*这里的9890是用分辨率的宽高相减得到 */
                background-position: -9890px;
            }

            /* to {background-position:100%;}  一样*/
        }

        #ds {
            /*star是keyframes动画名称   第一个时间是完成动画花费的时间第二是延迟多少秒开始动画  然后是无限循环,normal是正常顺序播放 (reverse为反向)*/
            /* animation: mouse 2000ms steps(23, end) 0ms infinite normal; */
              /* 用css 需要知道间段数 :23 */
        }

        /* light */

        .light {
            position: relative;
            width: 614px;
            height: 161px;
            background: url(./image/LOGO_05.png) no-repeat;
        }

        @keyframes light {
            from {
                background-position-y: 0;
            }

            to {
                background-position-y: 100%;
            }
        }

        .lighta {
            position: absolute;
            width: 100%;
            height: 100%;
            top: 0;
            left: 0;
            background: url(./image/light.png) no-repeat;
            background-position: 0 0;
            background-size: 100% auto;    //  这个在适配里面很重要 ·········································**
            /*star是keyframes动画名称   第一个时间是完成动画花费的时间第二是延迟多少秒开始动画  然后是无限循环,normal是正常顺序播放 (reverse为反向)*/
            animation: light 1450ms steps(23, end) 0ms infinite normal;
            /* 用css 需要知道间段数 :23 */
        }
    </style>
</head>

<body>
    <!-- 星星js控制的 -->
    <section>
        <!-- <div class="star" id="starjs"></div>
        <div>星星js控制的</div> -->
        <!-- <span>
            <button id="cssPlay">播放/暂停</button>
            <button id="cssSlowDown">-减速-</button>
            <button id="cssSpeedUp">+加速+</button>
            <button id="cssReverse">切换播放顺序</button>
        </span> -->
    </section>
    <script>
        let css = document.getElementById('starjs');
        // let cssPlay = document.getElementById('cssPlay');
        // let cssSlowDown = document.getElementById('cssSlowDown');
        // let cssSpeedUp = document.getElementById('cssSpeedUp');
        // let cssReverse = document.getElementById('cssReverse');
        let xPos = 0;
        let interval = 33.333333;  //100 是3s
        let direction = -1; // -1: forward, 1: reverse
        function cstarnimate() {
                                                    // //需要知道图片分辨率的高,宽
            css.style.backgroundPosition = direction * (xPos += 60) % 1800 + 'px';
        }
        function resetInterval() {
            clearInterval(timer);
            timer = setInterval(cstarnimate, interval);
        }
        /* Initial timer setup */
        // let timer = setInterval(cstarnimate, interval);
        // cssPlay.addEventListener('click', function() {
        //     if(timer) {
        //         clearInterval(timer);
        //         timer = undefined;
        //     } else {
        //         timer = setInterval(cstarnimate, interval);
        //     }
        // });
        // cssSlowDown.addEventListener('click', function() {
        //     if(interval + 10 >= 200) interval = 200;
        //     else interval += 10;
        //     resetInterval();
        // });
        // cssSpeedUp.addEventListener('click', function() {
        //     if(interval - 10 <= 20) interval = 20;
        //     else interval -= 10;
        //     resetInterval();
        // });
        // cssReverse.addEventListener('click', function() {
        //     if(direction === 1) direction = -1;
        //     else direction = 1;
        //     resetInterval();
        // });
    </script>

    <section>--------</section>

    <!-- 星星css animation 写的 -->
    <section>
        <div class="star" id="starcss"></div>
        <div>星星css animation 写的</div>
        <!-- <span>
                    <button id="starcssPlay">播放/暂停</button>
                    <button id="starcssSlowDown">-减速-</button>
                    <button id="starcssSpeedUp">+加速+</button>
                    <button id="starcssReverse">切换播放顺序</button>
                </span> -->
    </section>
    <script>
            // var starcss = document.getElementById('starcss');
            // let starcssPlay = document.getElementById('starcssPlay');
            // let starcssSlowDown = document.getElementById('starcssSlowDown');
            // let starcssSpeedUp = document.getElementById('starcssSpeedUp');
            // let starcssReverse = document.getElementById('starcssReverse');
            // starcssPlay.addEventListener('click', function() {
            //     if(getComputedStyle(starcss).animationPlayState === 'running') {
            //         starcss.style.animationPlayState = 'paused';
            //     } else {
            //         starcss.style.animationPlayState = 'running';
            //     }
            // });
            // starcssSlowDown.addEventListener('click', function() {
            //     let duration = +getComputedStyle(starcss).animationDuration.slice(0, -1);
            //     if(duration + 0.3 >= 6) duration = 6;
            //     else duration += 0.3;
            //     starcss.style.animationDuration = duration + 's';
            // });
            // starcssSpeedUp.addEventListener('click', function() {
            //     let duration = +getComputedStyle(starcss).animationDuration.slice(0, -1);
            //     if(duration - 0.3 <= 0.6) duration = 0.6;
            //     else duration -= 0.3;
            //     starcss.style.animationDuration = duration + 's';
            // });
            // starcssReverse.addEventListener('click', function() {
            //     if(getComputedStyle(starcss).animationDirection === 'normal') {
            //         starcss.style.animationDirection = 'reverse';
            //     } else {
            //         starcss.style.animationDirection = 'normal';
            //     }
            // });
    </script>


    <section>--------</section>


    <!-- 地鼠 css  和js 分别都有-->
    <section>
        <div class="ds" id="ds"></div>
        <div>地鼠</div>
    </section>
    <script>
        // 用js 不需要知道间段数
        var ds = document.getElementById('ds');
        var xPos4 = 0;
        var interval4 = 50;  //100 是3s    周期定时器,什么时间开始执行
        var direction4 = -1; // -1: forward, 1: reverse  负数为正 从左往右播放
        function cstarnimate() {
            //横向雪碧图 高分辨率宽430px
            // 求余的好处是 不会出现小数,而且利用的是加法 , 最初的初始位置是430 ,然后一直累加 860 , 
            // 求余之后 860% 10320 = 860 , 2580% 10320 = 2580 ... 最后 10320%10320 = 0, 这些都是倍数关系, 10750%10320 = 430,往后的结果都是重复的
            // 不想要数字那么大也可以加个判断
            if (xPos4 == 10320) xPos4 = 0; //可以重新归0, 初始位置
            xPos4 = xPos4 + 430; //需要知道图片分辨率的高
            ds.style.backgroundPosition = direction4 * xPos4 % 10320 + 'px';
        }
        var timer4 = null;
        function resetInterval() {
            clearInterval(timer4);
            timer4 = setInterval(cstarnimate, interval4);
        }
        /* Initial timer setup */
        timer4 = setInterval(cstarnimate, interval4);


    </script>

    <section>--------</section>

    <!--  css animation流光字 -->
    <section>
        <div class="light">
            <div class="lighta"></div>
        </div>
        <div>流光字</div>
    </section>


</body>

</html>

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

在Cesium中,可以使用雪碧图(Sprite)来实现贴图效果。雪碧图是一种将多个小图标合并到一张大图上的技术,通过指定不同的纹理坐标来显示不同的图标。 要在Cesium中使用雪碧图,可以按照以下步骤进行操作: 1. 创建自定义的Geometry形状,并指定贴图规则。可以使用Cesium的Geometry和GeometryInstance来创建自定义的几何体,并使用Material来指定贴图规则。 2. 将图片作为材质贴到自己的Geometry上。可以使用Cesium的TextureAtlas类来加载雪碧图,并将其作为材质贴到自定义的Geometry上。 3. 通过primitives加载自定义的Geometry。可以使用Cesium的Primitive和PrimitiveCollection来加载自定义的Geometry,并将其添加到场景中。 4. 可以通过更换appearance实现动态切换图片。可以使用Cesium的Appearance类来定义几何体的外观,并通过更换材质贴图来实现动态切换图片的效果。 以下是一个使用雪碧图的示例代码: ```javascript // 创建自定义的Geometry形状 var geometry = new Cesium.Geometry({ // ... 定义几何体的顶点信息 }); // 指定贴图规则 var material = new Cesium.Material({ // ... 定义贴图规则 }); // 将图片作为材质贴到自己的Geometry上 var textureAtlas = new Cesium.TextureAtlas({ // ... 加载雪碧图 }); material.setTextureAtlas(textureAtlas); // 创建自定义的GeometryInstance var geometryInstance = new Cesium.GeometryInstance({ geometry: geometry, attributes: { // ... 定义几何体的属性信息 }, id: 'customGeometry' }); // 创建Primitive并添加到场景中 var primitive = new Cesium.Primitive({ geometryInstances: [geometryInstance], appearance: new Cesium.Appearance({ material: material }) }); scene.primitives.add(primitive); // 动态切换图片 function changeTexture() { var newTexture = new Cesium.TextureAtlas({ // ... 加载新的雪碧图 }); material.setTextureAtlas(newTexture); } ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值