Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   ActionScript 1.0/2.0 (http://www.flasher.ru/forum/forumdisplay.php?f=93)
-   -   Змейка (http://www.flasher.ru/forum/showthread.php?t=112713)

tikhop 05.06.2008 21:41

Змейка
 
Хочу понять как сделана эта змейка, с чего начинать? Рисовать змейку понятно как, но вот как она так возвращается, я не понимаю...
http://five3d.mathieu-badimon.com/

silin 05.06.2008 22:14

мне так представляется:
змейка - массив мувиков-линий
при движении мыши добавляем в конец массива, но не больше какого-то предела, лишние удаляем из начала массива
при простое мыши по таймеру удаляем опять же из начала..

у них вся эта ботва в их же 3D-пространстве реализована

tikhop 05.06.2008 22:22

Вложений: 1
ну 3D-пространство меня не интересует, просто я не понимал как он так плавно меняет размер змейки, таймер там стоит на одну секунду, после чего змейка начинает уменьшать, нужно попробовать сделать через массив...

Попробовал..:
Код:

var snake_array:Array=[]
var snakePart_mc:MovieClip
function timer(){
        snakePart=_root.attachMovie("snakePartSymbol", "snakePartSymbol", _root.getNextHighestDepth())
        snakePart._x=_xmouse
        snakePart._y=_ymouse
        snake_array.push(snakePart)
        if(snake_array.length>40){
                removeMovieClip(snake_array.shift(snakePart))
        }
        updateAfterEvent()
}
setInterval(timer, 10)

Все работает, но когда водишь мышкой быстро, то шарики не успевают аттачится друг за другом и если посмотреть http://five3d.mathieu-badimon.com/ тут, то тут все ровно с этим и линия рисуется оч ровная и "хорошая"

Вопрос, как добится такой линии

silin 06.06.2008 12:44

потому как их надо еще и линями соединять
я бы сделал без шариков, только с линиями
можно под них заранее мувиков наплодить, а потом только рисовать:
Код:

import flash.geom.Point;

var snake_array:Array=[];
var prevPoint:Point;
var currPoint:Point;
var counter:Number = 0;

for (var i:Number = 0; i < 40; i++)
{
        snake_array.push(_root.createEmptyMovieClip("part" + i, i));
}

prevPoint = new Point(_root._xmouse, _root._ymouse);
setInterval(this,"timer", 10);

function timer()
{
        counter++;
        counter %= snake_array.length;
        currPoint=new Point(_root._xmouse, _root._ymouse);
        setLine(counter, currPoint, prevPoint);
        prevPoint = currPoint;
        updateAfterEvent();
}

function setLine(id:Number, p1:Point, p2:Point)
{
        var mc:MovieClip = snake_array[id];
        mc.clear();
        mc.lineStyle(24, 0x0081A1);
        mc.moveTo(p1.x, p1.y);
        mc.lineTo(p2.x, p2.y);
}


tikhop 06.06.2008 13:09

Большое спасибо...

Psycho Tiger 06.06.2008 15:20

Цитата:

Erreur 404 : Impossible de trouver la page demandée
Есть у кого рабочая ссылка? Очень хочу посмотреть на 3д змейку :)


Часовой пояс GMT +4, время: 11:21.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.