Модераторы: SoWa
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Драг мувика по кривой... 
:(
    Опции темы
Volchara
Дата 26.12.2006, 17:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 11.12.2006
Где: Украина, Киев

Репутация: нет
Всего: нет



Как можно организовать перетаскивание мувика по кривой?
Тоесть есть массив с координатами, это точки изгиба...
Это что то среднее между драгом и гридом...
Вообщем у кого какие идеи?
PM MAIL WWW ICQ   Вверх
Maksys
Дата 26.12.2006, 21:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Future Splasher
***


Профиль
Группа: Завсегдатай
Сообщений: 1289
Регистрация: 15.6.2005
Где: Екатеринбург

Репутация: 3
Всего: 17



Просто к мышке приляпываешь mc и тащишь.. чем больше координата по оси x пропорциональная по гриду и y и наобород....



--------------------
 С уважением, BiMaWa™©.
user posted image
user posted image
PM MAIL ICQ Skype GTalk   Вверх
Volchara
Дата 26.12.2006, 22:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 11.12.2006
Где: Украина, Киев

Репутация: нет
Всего: нет



Maksys, так дело в том что таскание надо производить не по прямой, а по произвольной кривой...
PM MAIL WWW ICQ   Вверх
AlDev
Дата 27.12.2006, 04:36 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный идиотъ
***


Профиль
Группа: Участник Клуба
Сообщений: 1927
Регистрация: 17.4.2005
Где: Irk, rus

Репутация: 8
Всего: 50



Код

package
{
    import flash.display.Graphics;
    
    public class SmoothLine
    {
        public static function draw(graphics:Graphics, dots:Array, tansion:Number, step:Number = 0.02):void {
                
            var x:Number = dots[dots.length-1].x + (dots[dots.length-2].x - dots[dots.length-1].x);
            var y:Number = dots[dots.length-1].y - (dots[dots.length-2].y - dots[dots.length-1].y);
            var endDot:Vector = new Vector(x,y);
            
            x = dots[0].x - (dots[1].x - dots[0].x);
            y = dots[0].y - (dots[1].y - dots[1].y);            
            var startDot:Vector = new Vector(x,y);
            
            var newDots:Array = new Array();
            
            var i:Number = 0;
            newDots.push(startDot);
            for (i=0;i<dots.length;i++) {
                newDots.push(dots[i]);
            }
            newDots.push(endDot);
                    
            graphics.moveTo(dots[0].x,dots[0].y);
            
            for (i = 0;i<newDots.length-3;i++) {
                
                for (var j:Number = 0; j<=1;j+=step) {                
                    
                    var p0:Vector = newDots[i];
                    var p1:Vector = newDots[(i + 1)%newDots.length];
                    var p2:Vector = newDots[(i + 2)%newDots.length];
                    var p3:Vector = newDots[(i + 3)%newDots.length];
                    
                    var u:Number = j;
                    var uu:Number = Math.pow(u,2);
                    var uuu:Number = Math.pow(u,3);
                    
                    var h0:Number = 2*uuu - 3*uu + 1;// calculate basis function 1
                    var h1:Number = -2*uuu + 3*uu;// calculate basis function 2
                    var h2:Number = uuu - 2*uu + u;         // calculate basis function 3
                    var h3:Number = uuu -  uu;              // calculate basis function 4
                    
                    var t1x:Number = tansion*(p2.x - p0.x);
                    var t1y:Number = tansion*(p2.y - p0.y);
                    var t2x:Number = tansion*(p3.x - p1.x);
                    var t2y:Number = tansion*(p3.y - p1.y);
                    x = h0*p1.x + h1*p2.x + h2*t1x + h3*t2x;
                    y = h0*p1.y + h1*p2.y + h2*t1y + h3*t2y;

                    graphics.lineTo(x,y);
                }
            }
        }
    }
}


Код

package
{
    public class Vector
    {
        public var x:Number;
        public var y:Number;
        
        public function Vector(x:Number,y:Number) {
            this.x = x;
            this.y = y;
        }
    }
}


Код

package {
    import flash.display.Sprite;
    import flash.display.Graphics;
    import flash.ui.Keyboard;
    import flash.events.Event;

    public class convertS extends Sprite
    {
        public function drawPlus(target:Graphics,x:Number,y:Number,r:Number):void {
            target.moveTo(x+r,y);
            target.lineTo(x-r,y);
            target.moveTo(x,y+r);
            target.lineTo(x,y-r);
        }
                
        public function convertS()
        {
            var pList:Array = new Array();            
            pList.push(new Vector(50, 250));
            pList.push(new Vector(100, 300));
            pList.push(new Vector(150, 200));
            pList.push(new Vector(200, 250));
            pList.push(new Vector(250, 300));
            pList.push(new Vector(300, 350));
            pList.push(new Vector(350, 320));
            
            var sbuf:Sprite = new Sprite();
            sbuf.graphics.clear();
            sbuf.graphics.lineStyle(1);
            addChild(sbuf);
            for (var i:Number = 0;i<pList.length;i++) {
                var v:Vector = pList[i];
//                drawPlus(sbuf.graphics,v.x,v.y,2);
            }
            
            var dbuf:Sprite = new Sprite();
            dbuf.graphics.lineStyle(1);
            addChild(dbuf);
            
            SmoothLine.draw(dbuf.graphics,pList,0.6,0.0002);
        }
    }
}



переводить в as 2 лень, это ActionScript 3.
Но смысл  я думаю понять можно.
PM MAIL WWW ICQ YIM MSN   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Flash"
AlDev
SoWa
  • Если вы хотите предложить кому-либо работу, то пишите или в личку, или оставляйте сообщения в специально предназначеном для этого форуме "Объявления о найме специалистов"
  • Один вопрос - одна тема. Не надо переходов от одного вопроса к другому.
  • Если вы хотите показать какой-нибудь ваш мульт, причём показать, а не предоставить исходник, то вам сюда
  • Вопросы по разработке интернет-приложений на Flex и вопросы по MXML пишите в раздел Flex
  • Смотрим в будущее. ActionScript 3 обсуждается в форуме ActionScript 3
  • Новости из мира Flash.
  • New! [code=ascript][/code] - подсветка ActionScript + wikipedia help

Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, AlDev, SoWa.

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | ActionScript 1,2 | Следующая тема »


 




[ Время генерации скрипта: 0.1298 ]   [ Использовано запросов: 21 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.