精华内容
下载资源
问答
  • Android下雪动画的实现 自定义View package com.shanjing.snowflake; import android.content.Context; import android.graphics.Canvas; import android.util.AttributeSet; import android.view.View; import ...

    Android下雪动画的实现

    自定义View

    package com.shanjing.snowflake;
    
    import android.content.Context;
    import android.graphics.Canvas;
    import android.util.AttributeSet;
    import android.view.View;
    import android.view.ViewTreeObserver;
    
    import androidx.annotation.Nullable;
    
    import java.util.ArrayList;
    import java.util.List;
    
    public class FallingView extends View {
    
        private Context mContext;
        private AttributeSet mAttrs;
    
        private List<FallObject> fallObjects;
    
        private int viewWidth;
        private int viewHeight;
    
        private static final int defaultWidth = 600;//默认宽度
        private static final int defaultHeight = 1000;//默认高度
        private static final int intervalTime = 5;//重绘间隔时间
    
        public FallingView(Context context) {
            super(context);
            mContext = context;
            init();
        }
    
        public FallingView(Context context, @Nullable AttributeSet attrs) {
            super(context, attrs);
            mContext = context;
            mAttrs = attrs;
            init();
        }
    
        private void init() {
            fallObjects = new ArrayList<>();
        }
    
        @Override
        protected void onMeasure(int widthMeasureSpec, int heightMeasureSpec) {
            super.onMeasure(widthMeasureSpec, heightMeasureSpec);
            int height = measureSize(defaultHeight, heightMeasureSpec);
            int width = measureSize(defaultWidth, widthMeasureSpec);
            setMeasuredDimension(width, height);
    
            viewWidth = width;
            viewHeight = height;
        }
    
        private int measureSize(int defaultSize, int measureSpec) {
            int result = defaultSize;
            int specMode = View.MeasureSpec.getMode(measureSpec);
            int specSize = View.MeasureSpec.getSize(measureSpec);
    
            if (specMode == View.MeasureSpec.EXACTLY) {
                result = specSize;
            } else if (specMode == View.MeasureSpec.AT_MOST) {
                result = Math.min(result, specSize);
            }
            return result;
        }
    
        @Override
        protected void onDraw(Canvas canvas) {
            super.onDraw(canvas);
            if (fallObjects.size() > 0) {
                for (int i = 0; i < fallObjects.size(); i++) {
                    //然后进行绘制
                    fallObjects.get(i).drawObject(canvas);
                }
                // 隔一段时间重绘一次, 动画效果
                getHandler().postDelayed(runnable, intervalTime);
            }
        }
    
        // 重绘线程
        private Runnable runnable = new Runnable() {
            @Override
            public void run() {
                invalidate();
            }
        };
    
        /**
         * 向View添加下落物体对象
         *
         * @param fallObject 下落物体对象
         * @param num
         */
        public void addFallObject(final FallObject fallObject, final int num) {
            getViewTreeObserver().addOnPreDrawListener(new ViewTreeObserver.OnPreDrawListener() {
                @Override
                public boolean onPreDraw() {
                    getViewTreeObserver().removeOnPreDrawListener(this);
                    for (int i = 0; i < num; i++) {
                        FallObject newFallObject = new FallObject(fallObject.builder, viewWidth, viewHeight);
                        fallObjects.add(newFallObject);
                    }
                    invalidate();
                    return true;
                }
            });
        }
    }
    package com.shanjing.snowflake;
    
    import android.graphics.Bitmap;
    import android.graphics.Canvas;
    import android.graphics.Matrix;
    import android.graphics.PixelFormat;
    import android.graphics.drawable.Drawable;
    
    import java.util.Random;
    
    public class FallObject {
        private int initX;
        private int initY;
        private Random random;
        private int parentWidth;//父容器宽度
        private int parentHeight;//父容器高度
        private float objectWidth;//下落物体宽度
        private float objectHeight;//下落物体高度
    
        public int initSpeed;//初始下降速度
        public int initWindLevel;//初始风力等级
    
        public float presentX;//当前位置X坐标
        public float presentY;//当前位置Y坐标
        public float presentSpeed;//当前下降速度
        private float angle;//物体下落角度
    
        private Bitmap bitmap;
        public Builder builder;
    
        private boolean isSpeedRandom;//物体初始下降速度比例是否随机
        private boolean isSizeRandom;//物体初始大小比例是否随机
        private boolean isWindRandom;//物体初始风向和风力大小比例是否随机
        private boolean isWindChange;//物体下落过程中风向和风力是否产生随机变化
    
        private static final int defaultSpeed = 10;//默认下降速度
        private static final int defaultWindLevel = 0;//默认风力等级
        private static final int defaultWindSpeed = 10;//默认单位风速
        private static final float HALF_PI = (float) Math.PI / 2;//π/2
    
        public FallObject(Builder builder, int parentWidth, int parentHeight) {
            random = new Random();
            this.parentWidth = parentWidth;
            this.parentHeight = parentHeight;
            initX = random.nextInt(parentWidth);
            initY = random.nextInt(parentHeight) - parentHeight;
            presentX = initX;
            presentY = initY;
    
            this.builder = builder;
            isSpeedRandom = builder.isSpeedRandom;
            isSizeRandom = builder.isSizeRandom;
            isWindRandom = builder.isWindRandom;
            isWindChange = builder.isWindChange;
    
            initSpeed = builder.initSpeed;
            randomSpeed();
            randomSize();
            randomWind();
        }
    
        private FallObject(Builder builder) {
            this.builder = builder;
            initSpeed = builder.initSpeed;
            bitmap = builder.bitmap;
    
            isSpeedRandom = builder.isSpeedRandom;
            isSizeRandom = builder.isSizeRandom;
            isWindRandom = builder.isWindRandom;
            isWindChange = builder.isWindChange;
        }
    
        public static final class Builder {
            private int initSpeed;
            private int initWindLevel;
            private Bitmap bitmap;
    
            private boolean isSpeedRandom;
            private boolean isSizeRandom;
            private boolean isWindRandom;
            private boolean isWindChange;
    
            public Builder(Bitmap bitmap) {
                this.initSpeed = defaultSpeed;
                this.initWindLevel = defaultWindLevel;
                this.bitmap = bitmap;
    
                this.isSpeedRandom = false;
                this.isSizeRandom = false;
                this.isWindRandom = false;
                this.isWindChange = false;
            }
    
            public Builder(Drawable drawable) {
                this.initSpeed = defaultSpeed;
                this.initWindLevel = defaultWindLevel;
                this.bitmap = drawableToBitmap(drawable);
    
                this.isSpeedRandom = false;
                this.isSizeRandom = false;
                this.isWindRandom = false;
                this.isWindChange = false;
            }
    
            /**
             * 设置物体的初始下落速度
             *
             * @param speed
             * @return
             */
            public Builder setSpeed(int speed) {
                this.initSpeed = speed;
                return this;
            }
    
            /**
             * 设置物体的初始下落速度
             *
             * @param speed
             * @param isRandomSpeed 物体初始下降速度比例是否随机
             * @return
             */
            public Builder setSpeed(int speed, boolean isRandomSpeed) {
                this.initSpeed = speed;
                this.isSpeedRandom = isRandomSpeed;
                return this;
            }
    
            /**
             * 设置物体大小
             *
             * @param w
             * @param h
             * @return
             */
            public Builder setSize(int w, int h) {
                this.bitmap = changeBitmapSize(this.bitmap, w, h);
                return this;
            }
    
            /**
             * 设置物体大小
             *
             * @param w
             * @param h
             * @param isRandomSize 物体初始大小比例是否随机
             * @return
             */
            public Builder setSize(int w, int h, boolean isRandomSize) {
                this.bitmap = changeBitmapSize(this.bitmap, w, h);
                this.isSizeRandom = isRandomSize;
                return this;
            }
    
            /**
             * 设置风力等级、方向以及随机因素
             *
             * @param level        风力等级(绝对值为 5 时效果会比较好),为正时风从左向右吹(物体向X轴正方向偏移),为负时则相反
             * @param isWindRandom 物体初始风向和风力大小比例是否随机
             * @param isWindChange 在物体下落过程中风的风向和风力是否会产生随机变化
             * @return
             */
            public Builder setWind(int level, boolean isWindRandom, boolean isWindChange) {
                this.initWindLevel = level;
                this.isWindRandom = isWindRandom;
                this.isWindChange = isWindChange;
                return this;
            }
    
            public FallObject build() {
                return new FallObject(this);
            }
        }
    
        /**
         * 绘制物体对象
         *
         * @param canvas
         */
        public void drawObject(Canvas canvas) {
            moveObject();
            canvas.drawBitmap(bitmap, presentX, presentY, null);
        }
    
        /**
         * 移动物体对象
         */
        private void moveObject() {
            moveX();
            moveY();
            if (presentY > parentHeight || presentX < -bitmap.getWidth() || presentX > parentWidth + bitmap.getWidth()) {
                reset();
            }
        }
    
        /**
         * X轴上的移动逻辑
         */
        private void moveX() {
            presentX += defaultWindSpeed * Math.sin(angle);
            if (isWindChange) {
                angle += (float) (random.nextBoolean() ? -1 : 1) * Math.random() * 0.0025;
            }
        }
    
        /**
         * Y轴上的移动逻辑
         */
        private void moveY() {
            presentY += presentSpeed;
        }
    
        /**
         * 重置object位置
         */
        private void reset() {
            presentY = -objectHeight;
            randomSpeed();//记得重置时速度也一起重置,这样效果会好很多
            randomWind();//记得重置一下初始角度,不然雪花会越下越少(因为角度累加会让雪花越下越偏)
        }
    
        /**
         * 随机物体初始下落速度
         */
        private void randomSpeed() {
            if (isSpeedRandom) {
                presentSpeed = (float) ((random.nextInt(3) + 1) * 0.1 + 1) * initSpeed;//这些随机数大家可以按自己的需要进行调整
            } else {
                presentSpeed = initSpeed;
            }
        }
    
        /**
         * 随机物体初始大小比例
         */
        private void randomSize() {
            if (isSizeRandom) {
                float r = (random.nextInt(10) + 1) * 0.1f;
                float rW = r * builder.bitmap.getWidth();
                float rH = r * builder.bitmap.getHeight();
                bitmap = changeBitmapSize(builder.bitmap, (int) rW, (int) rH);
            } else {
                bitmap = builder.bitmap;
            }
            objectWidth = bitmap.getWidth();
            objectHeight = bitmap.getHeight();
        }
    
        /**
         * 随机风的风向和风力大小比例,即随机物体初始下落角度
         */
        private void randomWind() {
            if (isWindRandom) {
                angle = (float) ((random.nextBoolean() ? -1 : 1) * Math.random() * initWindLevel / 50);
            } else {
                angle = (float) initWindLevel / 50;
            }
    
            //限制angle的最大最小值
            if (angle > HALF_PI) {
                angle = HALF_PI;
            } else if (angle < -HALF_PI) {
                angle = -HALF_PI;
            }
        }
    
        /**
         * drawable图片资源转bitmap
         *
         * @param drawable
         * @return
         */
        public static Bitmap drawableToBitmap(Drawable drawable) {
            Bitmap bitmap = Bitmap.createBitmap(
                    drawable.getIntrinsicWidth(),
                    drawable.getIntrinsicHeight(),
                    drawable.getOpacity() != PixelFormat.OPAQUE ? Bitmap.Config.ARGB_8888
                            : Bitmap.Config.RGB_565);
            Canvas canvas = new Canvas(bitmap);
            drawable.setBounds(0, 0, drawable.getIntrinsicWidth(), drawable.getIntrinsicHeight());
            drawable.draw(canvas);
            return bitmap;
        }
    
        /**
         * 改变bitmap的大小
         *
         * @param bitmap 目标bitmap
         * @param newW   目标宽度
         * @param newH   目标高度
         * @return
         */
        public static Bitmap changeBitmapSize(Bitmap bitmap, int newW, int newH) {
            int oldW = bitmap.getWidth();
            int oldH = bitmap.getHeight();
            // 计算缩放比例
            float scaleWidth = ((float) newW) / oldW;
            float scaleHeight = ((float) newH) / oldH;
            // 取得想要缩放的matrix参数
            Matrix matrix = new Matrix();
            matrix.postScale(scaleWidth, scaleHeight);
            // 得到新的图片
            bitmap = Bitmap.createBitmap(bitmap, 0, 0, oldW, oldH, matrix, true);
            return bitmap;
        }
    }

    布局中引用自定义视图

    <com.shanjing.snowflake.FallingView
            android:id="@+id/fallingView"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />

    代码设置动画属性并显示

    //初始化一个雪花样式的fallObject
            FallObject.Builder builder = new FallObject.Builder(getResources().getDrawable(R.drawable.snow_flake));
            FallObject fallObject = builder
                    .setSpeed(6, true)
                    .setSize(40, 40, true)
                    .setWind(5, true, true)
                    .build();
    
            fallingView = findViewById(R.id.fallingView);
            fallingView.addFallObject(fallObject, 100);//添加下落物体对象

    原生JS实现(JS资源来自PHP中文网

    assets/css/www.jsdaima.com.css

    /*js代码(www.ph.cn)是IT资源下载与IT技能学习平台。我们拒绝滥竽充数,只提供精品IT资源!*/
    :root {
      font-family: "Microsoft Yahei", sans-serif;
    }
    
    html,
    body {
      width: 100%;
      height: 100%;
      padding: 0;
      margin: 0;
      background: rgb(119, 13, 13);
      background: radial-gradient(
        circle,
        rgba(119, 13, 13, 0.92) 64%,
        rgba(0, 0, 0, 0.6) 100%
      );
    }
    
    canvas {
      width: 100%;
      height: 100%;
    }
    
    
    .label {
      font-size: 2.2rem;
      background: url("../img/6368077651977322227241996.png");
      background-clip: text;
      -webkit-background-clip: text;
      color: transparent;
      animation: moveBg 30s linear infinite;
    }
    
    @keyframes moveBg {
      0% {
        background-position: 0% 30%;
      }
      100% {
        background-position: 1000% 500%;
      }
    }
    
    .middle {
      position: absolute;
      top: 50%;
      left: 50%;
      transform: translate(-50%, -50%);
      text-align: center;
      user-select: none;
    }
    
    .time {
      color: #d99c3b;
      text-transform: uppercase;
      display: flex;
      justify-content: center;
    }
    
    .time span {
      padding: 0 14px;
      font-size: 0.8rem;
    }
    
    .time span div {
      font-size: 3rem;
    }
    
    @media (max-width: 740px) {
      .label {
        font-size: 1.7rem;
      }
      .time span {
        padding: 0 16px;
        font-size: 0.6rem;
      }
      .time span div {
        font-size: 2rem;
      }
    }
    /*Powered by www.php.cn*/

    assets/index.html

    <!doctype html>
    <html>
    <head>
        <meta charset="utf-8">
        <meta name="viewport"
              content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=0,user-scalable=no,minimal-ui">
        <title>原生js实现喜庆背景带炫酷雪花飘落动画特效代码</title>
        <meta name="keywords" content="原生js,喜庆背景,炫酷雪花,飘落动画,特效代码"/>
        <meta name="description"
              content="原生js实现喜庆背景带炫酷雪花飘落动画特效代码下载。基于原生JavaScript+CSS实现,不依靠任何第三方jQuery库,兼容手机移动端,新年倒计时自动获取,可循环使用,非常简单实用的一款新年倒计时js特效代码。"/>
        <meta name="author" content="js代码(www.jsdaima.com)"/>
        <meta name="copyright" content="js代码(www.jsdaima.com)"/>
        <link rel="stylesheet" type="text/css" href="css/www.jsdaima.com.css">
    </head>
    <body>
    <div class="middle">
        <h1 class="label" id="newYear">距离新年倒计时</h1>
        <div class="time">
    		<span>
    		<div id="d">
    			00
    		</div>
    		天 </span> <span>
    		<div id="h">
    			00
    		</div>
    		时 </span> <span>
    		<div id="m">
    			00
    		</div>
    		分 </span> <span>
    		<div id="s">
    			00
    		</div>
    		秒 </span>
        </div>
    </div>
    
    <script>
    class Snowflake {
      constructor() {
        this.x = 0;
        this.y = 0;
        this.vx = 0;
        this.vy = 0;
        this.radius = 0;
        this.alpha = 0;
    
        this.reset();
      }
    
      reset() {
        this.x = this.randBetween(0, window.innerWidth);
        this.y = this.randBetween(0, -window.innerHeight);
        this.vx = this.randBetween(-3, 3);
        this.vy = this.randBetween(2, 5);
        this.radius = this.randBetween(1, 4);
        this.alpha = this.randBetween(0.1, 0.9);
      }
    
      randBetween(min, max) {
        return min + Math.random() * (max - min);
      }
    
      update() {
        this.x += this.vx;
        this.y += this.vy;
    
        if (this.y + this.radius > window.innerHeight) {
          this.reset();
        }
      }
    }
    
    class Snow {
      constructor() {
        this.canvas = document.createElement("canvas");
        this.ctx = this.canvas.getContext("2d");
    
        document.body.appendChild(this.canvas);
    
        window.addEventListener("resize", () => this.onResize());
        this.onResize();
        this.updateBound = this.update.bind(this);
        requestAnimationFrame(this.updateBound);
    
        this.createSnowflakes();
      }
    
      onResize() {
        this.width = window.innerWidth;
        this.height = window.innerHeight;
        this.canvas.width = this.width;
        this.canvas.height = this.height;
      }
    
      createSnowflakes() {
        const flakes = window.innerWidth / 4;
    
        this.snowflakes = [];
    
        for (let s = 0; s < flakes; s++) {
          this.snowflakes.push(new Snowflake());
        }
      }
    
      update() {
        this.ctx.clearRect(0, 0, this.width, this.height);
    
        for (let flake of this.snowflakes) {
          flake.update();
    
          this.ctx.save();
          this.ctx.fillStyle = "#FFF";
          this.ctx.beginPath();
          this.ctx.arc(flake.x, flake.y, flake.radius, 0, Math.PI * 2);
          this.ctx.closePath();
          this.ctx.globalAlpha = flake.alpha;
          this.ctx.fill();
          this.ctx.restore();
        }
        requestAnimationFrame(this.updateBound);
      }
    }
    
    new Snow();
    
    
    
    
    // Simple CountDown Clock
    var date = new Date;
    var year = date.getFullYear() + 1; 
    var NY = document.getElementById("newYear");
    NY.innerHTML = year+ " 年新年倒计时";
    const comingdate = new Date("Jan 1, "+year+" 00:00:00");
    
    const d = document.getElementById("d");
    const h = document.getElementById("h");
    const m = document.getElementById("m");
    const s = document.getElementById("s");
    
    const countdown = setInterval(() => {
      const now   = new Date();
      const des   = comingdate.getTime() - now.getTime();
      const days  = Math.floor(des / (1000 * 60 * 60 * 24));
      const hours = Math.floor((des % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60));
      const mins  = Math.floor((des % (1000 * 60 * 60)) / (1000 * 60));
      const secs  = Math.floor((des % (1000 * 60)) / 1000);
    
      d.innerHTML = getTrueNumber(days);
      h.innerHTML = getTrueNumber(hours);
      m.innerHTML = getTrueNumber(mins);
      s.innerHTML = getTrueNumber(secs);
    
      if (x <= 0) clearInterval(x);
    }, 1000);
    
    const getTrueNumber = x => (x < 10 ? "0" + x : x);
    
    
    </script>
    
    </body>
    </html>
    

    布局中使用WebView展示html网页

    <WebView
            android:id="@+id/wv"
            android:layout_width="match_parent"
            android:layout_height="240dp" />

    java代码进行加载网页

    wv = findViewById(R.id.wv);
            // 设置WebView属性,能够执行Javascript脚本
            wv.getSettings().setJavaScriptEnabled(true);
            //语言设置防止加载乱码
            wv.getSettings().setDefaultTextEncodingName("GBK");
            // 即asserts文件夹下有一个color2.html
            wv.loadUrl("file:///android_asset/index.html");

    最后是沉浸状态栏

    导入依赖库

    //沉浸状态栏
        implementation 'com.jaeger.statusbarutil:library:1.5.1'

    布局中需要使用CoordinatorLayout布局要不然沉浸不起作用,完整布局入下:

    <?xml version="1.0" encoding="utf-8"?>
    <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:background="@drawable/bg"
        android:orientation="vertical">
    
        <WebView
            android:id="@+id/wv"
            android:layout_width="match_parent"
            android:layout_height="240dp" />
    
        <com.shanjing.snowflake.FallingView
            android:id="@+id/fallingView"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
    
        <androidx.coordinatorlayout.widget.CoordinatorLayout
            android:id="@+id/cl_view"
            android:layout_width="match_parent"
            android:layout_height="match_parent" />
    </LinearLayout>

    完整Java代码如下:

    package com.shanjing.snowflake;
    
    import androidx.appcompat.app.AppCompatActivity;
    
    import android.os.Bundle;
    import android.view.View;
    import android.webkit.WebView;
    
    import com.jaeger.library.StatusBarUtil;
    
    public class MainActivity extends AppCompatActivity {
    
        private WebView wv;
        private View cl_view;
        private FallingView fallingView;
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            cl_view = findViewById(R.id.cl_view);
            StatusBarUtil.setTranslucentForImageView(MainActivity.this, 0, cl_view);
    
            wv = findViewById(R.id.wv);
            // 设置WebView属性,能够执行Javascript脚本
            wv.getSettings().setJavaScriptEnabled(true);
            //语言设置防止加载乱码
            wv.getSettings().setDefaultTextEncodingName("GBK");
            // 即asserts文件夹下有一个color2.html
            wv.loadUrl("file:///android_asset/index.html");
    
    
            //初始化一个雪花样式的fallObject
            FallObject.Builder builder = new FallObject.Builder(getResources().getDrawable(R.drawable.snow_flake));
            FallObject fallObject = builder
                    .setSpeed(6, true)
                    .setSize(40, 40, true)
                    .setWind(5, true, true)
                    .build();
    
            fallingView = findViewById(R.id.fallingView);
            fallingView.addFallObject(fallObject, 100);//添加下落物体对象
        }
    }
    

    Demo:https://github.com/cuiwenju2017/Snowflake

    展开全文
  • 浙江下雪

    千次阅读 2008-07-24 18:41:00
    浙江下雪下雪 浙江新闻 浙江新闻网 浙江都市网有人在杭州看到下雪了 (): 临安突降鹅毛春雪 (): 尼泊尔首都加德满年首次下雪人浙江民生 关注浙江民生工程,服务百姓生活。 · 浙江交通 关注浙江公共交通,服务百姓出行...
     浙江下雪
    
    下雪 浙江新闻 浙江新闻网 浙江都市网有人在杭州看到下雪了 (): 临安突降鹅毛春雪 (): 尼泊尔首都加德满年首次下雪人浙江民生 关注浙江民生工程,服务百姓生活。 · 浙江交通 关注浙江公共交通,服务百姓出行。 · 省外媒体看浙江 省外 neszjtag下雪l浙江浦江月下雪?月下雪,你信不信?前天(日)中午,家住浙江浦江亚泰广场的傅先生给记者打来电话,说他们那里下雪了,他用数码相机拍下了下雪的全过程。 当天中午,傅先生顶着烈日刚回到家,过了十几分钟,突然狂风大作,他正想去关窗户,却听到外面有人喊 nesshangduguoneiContentsCha浙江下雪张生瑜的博客 文章焦点博客焦点博客标签:下雪 浙江新闻 浙江新闻网 (): 临安突降鹅毛春雪 关注浙江民生工程 服务百姓生活。 · 浙江交通 浙江 关注浙江浦江 市民拍下分钟视频 你信不信?日中午 说他们那里下雪了 持续时间长达 星期一 上午 : 我听说浙江下雪了focuscngroupforum_detailphp?浙江下雪lrqedx的Donesyounetboardcoolpaisl★★★听说浙江下雪了,有没有气象专家可以解释一下,(转载)★★中新浙江网月日电 绍兴县杨汛桥镇出现“七月飞雪”的奇异气象?昨日,有目击者向记者报料,称其拍下了月日下午发生在杨汛桥镇上的下雪视频,持续时间长达 doneslrqedxarchive浙江下雪了 阿里巴巴 rchen的博客 我听说浙江下雪了,因为:浙江的频道断了,看来雪不小。没错,是浙江!汗…… 新闻频道播的每周质量报告 选在了:附近,之所以选择这个时间绝对不是巧合,就像曾经的零点新闻 提高过一句CG一样。 我不知道 每周质量报告 都什么时候 chinaalibabarchen浙江下雪了,『 北旅茶馆 』北旅之星望远镜论坛 北旅之星|广东基本上看不到下雪,北边的韶关可以看到。 广州其实也下过雪,很小,到地面就化了。 由于时间关系,我就不展开了浙江北边好像每年都下雪吧 http:imgcnjpg UploadFace_jpgbggdbbsviethreadphp?tid=手机酷拍 今天浙江下雪了今天浙江下雪了 点击: 作者: 不太懂 型号: 索尼爱立信 c 日期:[] 内容: 最新酷拍 一些不错的车牌 作者:MAX巨响 机型:索尼爱立信 Sc 朋友 作者:MAX巨响 机型:索尼爱立信 Sc 哈密瓜沙拉 作者:sapi 机型: younetboardcoolpaisl★★★听说浙江下雪了,有没有气象专家可以解释一下,(转载)★★中新浙江网月日电 绍兴县杨汛桥镇出 浙江7月下雪   浙江浦江下雪   浙江七月下雪.
    展开全文
  • 下雪效果

    2016-07-26 10:41:00
    <html> <head> <... //图片的过程中,横坐标的轨迹是以一点为中心的正弦曲线 //利用了setTimeout函数完成了动画的功能 //图片 var snowsrc="snow.png" //雪花个数...
    <html>
     <head>
    
     </head>
    
    <body>
      <script>
        //图片的过程中,横坐标的轨迹是以一点为中心的正弦曲线
        //利用了setTimeout函数完成了动画的功能
        //图片
        var snowsrc="snow.png"
        //雪花个数
        var no = 10;
        //声明变量,xp表示横坐标,yp表示纵坐标>
        var dx, xp, yp;
        //声明变量,am表示左右摆动的幅度,stx表示横坐标的偏移步长,sty表示纵坐标的步长>
        var am, stx, sty; 
        {
          //获取当前窗口的宽度
          clientWidth = document.body.clientWidth;
          //获取当前窗口的高度
          clientHeight = document.body.clientHeight;
        }
        var dx = new Array();
        var xp = new Array();
        var yp = new Array();
        var am = new Array();
        var stx = new Array();
        var sty = new Array();
        var snowFlakes = new Array();
        for (i = 0; i < no; ++ i) { 
          dx[i] = 0;                       
          //第i个图片的横坐标初始值
          xp[i] = Math.random()*(clientWidth-50); 
          yp[i] = Math.random()*clientHeight;//第i个图片的纵坐标初始值
          am[i] = Math.random()*20;         //第i个图片的左右摆动的幅度
          stx[i] = 0.02 + Math.random()/10; //第i个图片x方向的步长
          sty[i] = 0.7 + Math.random();     //第i个图片y方向的步长
          //生成一个容纳雪花图片的div,并设置其绝对坐标
          var snowFlakeDiv = document.createElement('div');
          snowFlakeDiv.setAttribute('id', 'dot'+ i);
          snowFlakeDiv.style.position = 'absolute';
          snowFlakeDiv.style.top = 15;
          snowFlakeDiv.style.left = 15;
          //生成一个雪花图片对象,设置宽高,并加入div
          var snowFlakeImg = document.createElement('img');
          snowFlakeImg.setAttribute('src', snowsrc);
          snowFlakeImg.style.width = 30;
          snowFlakeImg.style.height = 30;
          //将雪花div加入到document中,并通过数组保存
          snowFlakeDiv.appendChild(snowFlakeImg);
          document.body.appendChild(snowFlakeDiv);
          snowFlakes[i] = snowFlakeDiv;
        }
        function snow() { 
          for (i = 0; i < no; ++ i) { 
            //第i个图片的纵坐标加上步长
            yp[i] += sty[i];
            //如果新坐标超过了屏幕下沿,重置该图片的信息,包括横坐标、纵坐标以及x方向的步长和y方向的步长
            if (yp[i] > clientHeight-50) {
              //重新赋值图片的横坐标
              xp[i] = Math.random()*(clientWidth-am[i]-30);
              //重新赋值图片的纵坐标
              yp[i] = 0;
            }
            dx[i] += stx[i];//dx变量加上一个步长
            //直接操作数组中对应的雪花div
            var snowFlakeDiv = snowFlakes[i];
            //更新图片的纵坐标
            snowFlakeDiv.style.top = yp[i];
            //更新图片的横坐标
            snowFlakeDiv.style.left = xp[i] + am[i]*Math.sin(dx[i]);
          }
          //设定动画刷新的时间周期
          setTimeout("snow()", 10);
        }
        //调用snowIE()函数
        snow();
      </script>
    </body>
    </html>

     

    转载于:https://www.cnblogs.com/danydong/p/5706568.html

    展开全文
  • 下雪

    2009-02-17 22:33:00
    (一) 今天北京下雪了,挺大的雪,一会的时间地上已经有了挺厚的一层。这是今年第一次在雪中行走,过年回家都没赶上下雪,也该下点东西了,雨雪都行,天很旱,对人的生活会产生影响。 本来已经是很热了,把厚点的...

                (一)

     

                今天北京下雪了,挺大的雪,一会的时间地上已经有了挺厚的一层。这是今年第一次在雪中行走,过年回家都没赶上下雪,也该下点东西了,雨雪都行,天很旱,对人的生活会产生影响。

     

                本来已经是很热了,把厚点的衣服和鞋子都收了,如今又要拿出来,今天穿的是运动鞋,下班走在雪路上,嗤嗤的直打滑,索性直接滑着走,挺爽的。

     

     

                想起了小时候在东北家里的冬天,最难忘的时间就是下大雪,晚上8点多,鹅毛大雪,没有风,不冷,每当遇到这种天气,心理都美滋滋的,这时已经吃完了晚饭,浑身的力量没有地方使,先跑到马路上看看,明亮的路灯,根本没有车,行人也很少,爽,跑回家和大人说一声:我去滑雪玩了,说完拿着我的“雪地鞋”套在脚上狂奔出去开始在马路上飞驰;所谓的“雪地鞋”是那时家乡小男孩几乎每人一个的装备,有两种:一种是钢金弯成的,一种是铁丝和木板组合成的;用法是:一只脚套在里面,另一只脚用来蹬地加速或刹车,这个东西最好在压实的雪地上使用,刚下一两天最好,那样速度最快,不逊于自行车,因为时间长雪会结成冰,太滑反而不好控制。

     

                 那时候在马路上飞驰感觉像是在一个很大的童话的世界,美丽的雪花满天飞舞,明亮的路灯,宽阔平坦的马路,只有孩子们在街上玩耍,虽然飞奔的过程会摔倒,厚厚的雪地是不疼的,现在回想仍感觉那是孩子们的游戏天堂。

     

                  (二)

     

                   如今最热门的话题当然还是经济危机,裁员之类的,已经有很多工厂倒闭了,很多的员工已经失去了job,很多没有失去工作的,也因为经济寒冬内心在瑟瑟发抖,担心在结冰的路面上摔跤,很可怕么,也许是的,但是冬天也有这个季节自己的乐趣吧。

    展开全文
  • Canvas 动画,下雪

    2019-12-12 17:36:00
    前言去年圣诞节有一个下雪的背景动画的需求。在实现这个动画的过程中加深了对 canvas 动画的一些了解,在这里我仅是抛砖引玉的分享一下,欢迎各位大佬批评。代码已上传至 github 【h...
  • 纯css模拟下雪效果

    2019-01-21 02:01:08
    效果如其名,想必都见过下雪(可能南方人除外哈哈),但下雪效果只是一类效果的名称,可以是红包雨等一些自由落体的运动效果,本文就是用纯css模拟下雪的效果。 1.前言 由于公司产品的活动,需要模拟类似下雪的效果...
  • 一个简单的VB程序,可以模拟冬天下雪过程,可以实现堆积的功能
  • 下雪效果只是一类效果的名称,可以是红包雨等一些自由落体的运动效果,本文就是用纯css模拟下雪的效果,更多效果大家可以自行发挥。1、前言由于公司产品的活动,需要模拟类似下雪的效果。浏览器...
  • Unity利用粒子系统模拟下雪积雪效果

    万次阅读 2017-11-23 14:03:42
    2、 运用粒子系统下雪,利用粒子碰撞检测生成雪花落地,因为大批量的雪花其实是一张张图片组成的,把他们的载体网格合并成一个大的全删掉,不停的添加新生成的地上的雪花; 我现在来说一下这个简单的模拟下雪,因为...
  • wordpress网站下雪特效代码安装过程 你主题的fuctions.php添加如下代码 function Snowfall(){ ?> [removed][removed] [removed]snowFall.snow(document.body, {flakeCount : 90, maxSpeed : 12, round : ...
  • 最近广州降温了,别的地方都开始下雪了。作为一个土生土长的广东人,长这么大,没见过雪。
  • 原标题:大范围雨雪要来,南方确定再下雪!权威预报:14省有雪最大暴雪大范围雨雪要来,南方确定再下雪!权威预报:14省有雪最大暴雪北京时间1月13日上午8点,当我国中东部多地在冬日暖阳中开始回暖时,从超级计算机...
  • 下雪效果只是一类效果的名称,可以是红包雨等一些自由落体的运动效果,本文就是用纯css模拟下雪的效果,更多效果大家可以自行发挥。 1.前言 由于公司产品的活动,需要模拟类似下雪的效果。浏览器实现动画无非css3和...
  • 文章目录一、构建环境二、窗口透明化三、添加雪花四、移动雪花五、雪花旋转六、参数随机七、完成下雪特效八、打包成可执行文件打包方法1打包方法2九、全部代码展示工程目录package.jsonindex.... ...
  • 【Demo】项目练习之纯css模拟下雪效果 效果如其名,想必都见过下雪,但下雪效果只是一类效果的名称,可以是红包雨等一些自由落体的运动效果,本文就是用纯css模拟下雪的效果。 目录: 前言 原理 构造雪形状...
  • Processing——《下雪的季节》可视化流程

    万次阅读 多人点赞 2018-11-24 23:04:00
    Processing——《下雪的季节》可视化流程 一、前言 灵感来源(也谈不上灵感吧):正值冬季,下雪的季节,做做雪花飘落的“特效 ”也别有一番风味(虽然挺low的,哈哈哈)。更者,正好有一首歌,即名为《下雪的季 ...
  • 下雪 -- Free .Net Snow

    千次阅读 2008-06-01 01:27:00
    这个程序就是实现一个下雪过程。并且可以让雪花停留在一些边界处。最后还会产生积雪的效果。 这是第一个版本,可能有些不足之处。//*****************************************************************/// // ...
  • javascript实现下雪效果

    千次阅读 2008-08-06 22:55:00
    //启动雪花飘落过程(参数dot_number:雪花点数目)   var  i,snow_dot_html,dot_image;  dot_image =  "snow_dot.GIF" ; //雪花点图像  snow_dot_html =  ' id="snow_dot" border="0" src="'  ...
  • 下雪效果只是一类效果的名称,可以是红包雨等一些自由落体的运动效果,本文就是用纯css模拟下雪的效果,更多效果大家可以自行发挥。 1.前言 由于公司产品的活动,需要模拟类似下雪的效果。浏览器实现动画无非css...
  • 原标题:一个冬天没下雪的北京终于要下雪了?超级计算机:还不能完全确定1月30日,寒潮南下我国中东部,在我国黄淮江淮一线与冷空气交战掀起大范围雨雪天气,局地还可能有暴雪,这是今年新年以来出现的强度最大范围...
  • ArcGIS JS API+Three.js实现下雪特效 首先还是来看下效果图。 通过观察图片知道,在三维场景中移动和旋转地图,雪花也会有所变化。这是因为本示例中的雪花效果确实是添加进场景中的,是三维空间中的一部分。而有些...
  • 下雪效果只是一类效果的名称,可以是红包雨等一些自由落体的运动效果,本文就是用纯css模拟下雪的效果,更多效果大家可以自行发挥。 1.前言 由于公司产品的活动,需要模拟类似下雪的效果。浏览器实现动画无非css3和...
  • 去年圣诞节产品提了一个活动需求,其中有一个下雪的背景动画。在做这个动画的过程中加深了对 canvas 动画的一些了解,在这里我仅是抛砖引玉的分享一下,欢迎各位大佬批评。 代码已上传至 github ,感兴趣的可以 ...
  • 通过纹理导入实现下雪特效1.VUE中纹理导入过程1.1纹理图片存放路径1.2获取环境变量中的BASE_URL1.3通过THREE.TextureLoader加载纹理贴图2.创建下雪特效2.1用加载的纹理贴图创建雪花2.2 实现下雪特效动画3.demo效果4....
  • 点击上方“阿拉奇学Java”,选择“置顶或者星标”每天早晨00点00分,与你相约!大家好!在我们的后台开发人员实际写代码过程中,有的时候多多少少会需要写一些前端页面代码,如果自己手敲的话...
  • 3dmax:3dmax经典案例详细步骤图文教程之雪粒子系统模拟下雪动画效果 目录 3dmax经典案例详细步骤图文教程之雪粒子系统模拟下雪动画效果 3dmax经典案例详细步骤图文教程之雪粒子系统模拟下雪动画效果
  • 这样虽然灵活不足,但是子类可以很方便的通过继承实现一个需要类似功能的东西,就比如这里的下雨和下雪。顺便吐槽一下……我注释的风格不太好,中英混搭……如果你仔细观察,可以看到gif中的雨点或者雪花形态可能都...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 2,238
精华内容 895
关键字:

下雪的过程