跑动的小火柴人(flash动画)

本教程描绘的是完全用ActionScript做的一个火柴棍小人跑步的动画,你相信吗?完全是AS实现的。先看效果吧:
做的方法非常简单,直接把下面代码复制到第一帧,最好把帧频调到18fps。以下为引用的内容:
fscommand("allowscale", false);
fscommand("showmenu", false);
lineStyle(1, 0x000000, 100);
moveTo(0, 135);
lineTo(550, 135);
moveTo(0, 185);
lineTo(550, 185);
lineStyle(2, 0x000000, 100);
moveTo(26, 16);
lineTo(37, 16);
lineTo(37, 39);
curveTo(28, 43, 33, 67);
moveTo(37, 16);
lineTo(26, 24);
moveTo(37, 24);
lineTo(26, 31);
moveTo(37, 32);
lineTo(26, 40);
moveTo(41, 15);
lineTo(53, 14);
lineTo(53, 39);
curveTo(39, 45, 50, 66);
moveTo(53, 14);
lineTo(42, 21);
moveTo(53, 23);
lineTo(42, 28);
moveTo(53, 31);
lineTo(42, 38);
moveTo(27, 75);
lineTo(27, 90);
lineTo(39, 92);
moveTo(33, 74);
lineTo(33, 91);
moveTo(38, 74);
lineTo(38, 83);
lineTo(33, 84);
moveTo(33, 95);
curveTo(41, 113, 48, 94);
moveTo(41, 94);
lineTo(41, 127);
moveTo(30, 124);
curveTo(38, 84, 51, 125);
moveTo(55, 75);
curveTo(36, 69, 46, 92);
moveTo(49, 75);
curveTo(48, 86, 55, 92);
work_tree = function (tree_NO, speed_time) {
    this.createEmptyMovieClip("tree"+tree_NO, tree_NO);
    // trace("tree_name="+"tree"+tree_NO);
    tellTarget ("tree"+tree_NO) {
        
        lineStyle(1, 0x000000, 100);
        moveTo(0, -54);
        curveTo(-21, -42, -23, -20);
        curveTo(-18, 17, -5, 24);
        lineStyle(1, 0x000000, 100);
        moveTo(0, -54);
        curveTo(22, -42, 23, -20);
        curveTo(18, 17, 5, 24);
    
        lineStyle(0.25, 0x000000, 100);
        moveTo(-5, 24);
        lineTo(-5, -7);
        curveTo(1, 5, 5, -8);
        lineTo(5, 24);
        lineStyle(1, 0x000000, 100);
        moveTo(-5, 24);
        lineTo(-5, 55);
        lineTo(5, 55);
        lineTo(5, 24);
        // ------------
        this["tree"+tree_NO]._xscale = speed_time;
本文转自:http://www.5uflash.com/flashjiaocheng/Flashdonghuajiaocheng/546.html
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,让我们来看看如何使用 Qt 和 C++ 中的 QPropertyAnimation 绘制火柴跑动动画,并让其看起来像是在跑步。 首先,我们需要准备一些图像资源,包括火柴人的不同姿势,用于在动画中切换。接下来,我们可以创建一个 QWidget 来绘制火柴人,并在其上使用 QPropertyAnimation 来控制火柴人的位置和姿势。下面是示例代码: ```cpp #include <QApplication> #include <QWidget> #include <QPainter> #include <QPropertyAnimation> class StickFigure : public QWidget { public: StickFigure(QWidget *parent = nullptr) : QWidget(parent) { setFixedSize(200, 200); animation = new QPropertyAnimation(this, "pos"); animation->setDuration(2000); animation->setStartValue(QPoint(0, 0)); animation->setEndValue(QPoint(200, 200)); animation->setLoopCount(-1); animation->start(); } protected: void paintEvent(QPaintEvent *event) override { Q_UNUSED(event); QPainter painter(this); painter.setRenderHint(QPainter::Antialiasing); painter.translate(width() / 2, height() / 2); painter.drawPixmap(-25, -50, stickmanPixmap); } QVariant stickmanPixmap; void updateStickmanPixmap() { static const int NUM_IMAGES = 4; static const char *IMAGE_NAMES[NUM_IMAGES] = {"stickman1.png", "stickman2.png", "stickman3.png", "stickman4.png"}; static int currentImage = 0; currentImage = (currentImage + 1) % NUM_IMAGES; stickmanPixmap = QPixmap(IMAGE_NAMES[currentImage]); } private: QPropertyAnimation *animation; private slots: void updateAnimation() { updateStickmanPixmap(); update(); } }; int main(int argc, char *argv[]) { QApplication app(argc, argv); StickFigure stickFigure; stickFigure.show(); return app.exec(); } ``` 在 paintEvent 函数中,我们使用 QPainter 绘制火柴人,其中 stickmanPixmap 是一个 QVariant,可以在 updateAnimation 函数中更新。在 updateAnimation 函数中,我们使用 updateStickmanPixmap 函数更新火柴人的姿势,并调用 update 函数重新绘制。 在 StickFigure 的构造函数中,我们创建了一个 QPropertyAnimation,将其与 StickFigure 的位置属性绑定。我们设置了动画的起始位置和结束位置,并将其循环播放。最后,我们启动动画以开始播放。 这样,我们就可以使用 Qt 和 C++ 中的 QPropertyAnimation 绘制火柴跑动动画,并让其看起来像是在跑步。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值