Изменение размеров окна готового swf @ DeForum.ru
DeДверь  
Логин:  
Пароль:  
  Автологин  
   
Разместить рекламу
Письмо админу
Правила | FAQ | *Поиск | Наша команда | Регистрация | Вход
 
 
 Страница 1 из 1 [ Сообщений: 9 ] 
*   Список форумов / Технологии изображения / Flash » ответить » создать топик « | »
Автор Сообщение
Dr.Step Муж.
старожил
153
Сообщения: 7576
Зарегистрирован: 08.02.02
Откуда: Казань
Заголовок сообщения: Изменение размеров окна готового swf
Сообщение Добавлено: 29 Октябрь 2009, 08:44:13 
Есть скомпилированный файл (в аттаче).
Скопирован он был http://www.sephiroth.it/tutorials/flashPHP/scrollRect/ отсюда.
и по сути всем устраивает, кроме размеров самого окна.
Господа, а есть какая-то возможность менять размер окна не делая всё заново?

_________________
Добрым словом и Пистолетом всегда можно добится большего, чем просто Добрым словом. (с)
Dr.Step Муж.
старожил
153
Сообщения: 7576
Зарегистрирован: 08.02.02
Откуда: Казань
Сообщение Добавлено: 29 Октябрь 2009, 08:47:37 
http://f1.2file.net/0cdf22f59a5bdd9a472240844b5b8982/pano.rar
что-то аттач не вижу. может так.

_________________
Добрым словом и Пистолетом всегда можно добится большего, чем просто Добрым словом. (с)
eddy444 Муж.
Модератор
315
Сообщения: 14467
Зарегистрирован: 05.05.03
Откуда: NSK
Сообщение Добавлено: 29 Октябрь 2009, 10:37:47 
что ты понимаешь под "заново" - изменение циферок в строчке
rect = new Rectangle(0, 0, 450, 350)
?
а перекомпилять флэш придется в любом случае.
Dr.Step Муж.
старожил
153
Сообщения: 7576
Зарегистрирован: 08.02.02
Откуда: Казань
Сообщение Добавлено: 29 Октябрь 2009, 13:05:33 
eddy444 так само окно не 450 на 350. оно 500 на 400.
я уже два дня туплю над скриптом панорамной картинки, и то кол-во решений с которыми столкнулся ввело в ступор.
как когда простые вещи пытаешься объяснить человеку, который подсознательно боится предмета.

Задача у меня стоит такая:

Изображение

есть панорамки. 6 штук. при открытии запускается первая. мышкой я могу скроллить её по оси x и y, но только до границы картинки.
нажимая на баттон-превью следующей, в этом же окне открывается вторая и т.д.

Тот пример что я привёл понравился мне тем, что в нём не задаётся размер картинки в пикселях ( во всех остальных случаях, что я копал, нужно выставлять и рассчитывать каждую картинку (они с разными пропорциями)).
Я и захотел воспользоваться скриптом что в примере, но там как-то хитро скомпилено всё.

_________________
Добрым словом и Пистолетом всегда можно добится большего, чем просто Добрым словом. (с)
Dr.Step Муж.
старожил
153
Сообщения: 7576
Зарегистрирован: 08.02.02
Откуда: Казань
Сообщение Добавлено: 29 Октябрь 2009, 13:15:38 
пример который я нашёл для прокрутки картинки, но на 360 градусов и с не совсем ясным мне принцип рассчёта значений.

Код:
onClipEvent (enterFrame) {
var mouseoffset = 100;
var xcoord = Math.round((_root._xmouse-mouseoffset))*0.04;
var ycoord = Math.round((_root._ymouse-mouseoffset))*0.02;

with (this) {
if (_x>=200) {
_x = -205;
_x -= xcoord;
} else if (_x<=-205) {
_x = 200;
_x -= xcoord;
} else {
_x -= xcoord;
}

if (_y>=145) {
_y = 145;
_y -= ycoord;
} else if (_y<=28) {
_y = 28;
_y -= ycoord;
} else {
_y -= ycoord;
}
}
}


и красивый пример, с подгружаемыми картинками и без точных значений размера:

Код:
import mx.utils.Delegate
import flash.geom.Rectangle
import flash.geom.Point
import flash.filters.DropShadowFilter

class Slider2
{
    private var image:MovieClip
    private var target:MovieClip
    private var mouse:Point
    private var rect:Rectangle
    private var r_img:Rectangle
    private var r_mask:Rectangle
    private var _drop:DropShadowFilter
    private var mc_loader:MovieClipLoader
    private var x_pos:Number
    private var y_pos:Number

    private function Slider2(scope:MovieClip, file:String)
    {
        image  = scope.createEmptyMovieClip("image", 1)
        image._x = 20
        image._y = 20
        image.cacheAsBitmap = true
        target = scope

        rect = new Rectangle(0, 0, 450, 350)
        mouse  = new Point(0,0)
        _drop  = new DropShadowFilter(3,45, 0x00, 30, 5, 5, .5)
        x_pos = 0
        y_pos = 0

        load(file)
    }

    /**
     * Load the image file
     */
    private function load(file:String)
    {
        mc_loader = new MovieClipLoader()
        mc_loader.addListener(this)
        mc_loader.loadClip(file, image)
    }

    /**
     * Once image has been loaded
     * apply filters to the image movieclip
     * and start the animation
     */
    private function onLoadInit(tg:MovieClip):Void
    {
        image.filters = [_drop]
        r_img  = new Rectangle(0, 0, image._width, image._height)
        r_mask = new Rectangle(image._x, image._y, rect.width, rect.height)
        start();
    }

    public function start():Void
    {
        image.scrollRect = rect
        image.onEnterFrame = Delegate.create(this, enterframe)
    }

    /**
     * main enteframe function
     * check mouse position and
     * scroll the image
     */
    private function enterframe():Void
    {
        mouse.x = target._xmouse
        mouse.y = target._ymouse
        if(r_mask.containsPoint(mouse))
        {

            y_pos = ((Math.abs(image._y - mouse.y)/rect.height)*(r_img.height-rect.height))
            x_pos = ((Math.abs(image._x - mouse.x)/rect.width)*(r_img.width-rect.width))
        }

        rect.x += (x_pos - rect.x)/8
        rect.y += (y_pos - rect.y)/8

        image.scrollRect = rect
    }

    /**
     * MAIN function entry point
     * using '-main' option in mtasc this class will
     * be compiled and the static function main will be called
     * automatically
     */

    public static function main():Void
    {
        var app:Slider2 = new Slider2(_root, "files/image.jpg")
    }

}   


здесь конечно много лишнего типа тенюшечек, но всё же.

_________________
Добрым словом и Пистолетом всегда можно добится большего, чем просто Добрым словом. (с)
eddy444 Муж.
Модератор
315
Сообщения: 14467
Зарегистрирован: 05.05.03
Откуда: NSK
Сообщение Добавлено: 29 Октябрь 2009, 13:37:03 
ты про какое окно? окно под фотку 450 на 350 как в скрипте и указано.
Размер окна под флэш в теле страницы задается в хтмл.
Другое дело что пример приведен для какогото там компилятора. Скачай его и используй. если нудно это все дело вставить в какойто свой дизайн то попробовать полученный swf подгружать уже в с вой проект - должно работать.
Dr.Step Муж.
старожил
153
Сообщения: 7576
Зарегистрирован: 08.02.02
Откуда: Казань
Сообщение Добавлено: 29 Октябрь 2009, 14:01:04 
eddy444 а где можно прочитать подробно про создание:


Цитата:
панорамки. мышкой я могу скроллить её по оси x и y, но только до границы картинки.



чем подробнее тем лучше. похоже проще сделать с нуля, MTASC кажется ещё более запутанным.

_________________
Добрым словом и Пистолетом всегда можно добится большего, чем просто Добрым словом. (с)
eddy444 Муж.
Модератор
315
Сообщения: 14467
Зарегистрирован: 05.05.03
Откуда: NSK
Сообщение Добавлено: 29 Октябрь 2009, 19:07:30 
не знаю где - даже с моими не математическими мозгами пишу такие штуки сам. Например в
http://tribo.intelsib.ru/ такой код

mainpict.onEnterFrame = function() {
if (_xmouse>frame._x and _xmouse<(frame._width+frame._x) and _ymouse>frame._y and _ymouse<(frame._height+frame._y)) {
koefx = frame._width/((mainpict._width-frame._width));
koefy = frame._height/((mainpict._height-frame._height));
centrx = mainpict._width/2;
centry = mainpict._height/2;
mainpict._x +=((centrx-_xmouse)/koefx - mainpict._x)/15;
mainpict._y +=((centry-_ymouse)/koefy - mainpict._y)/15;
} else {
}
};

где
mainpict - это картинка которая панорамится
frame - это клип, габарит окошка, в котором панорамится. Такого же размера должна быть и маска.
15 - коэфициент "скорости резины". Описанный метод хуже по производительности чем самый первый пример в топике, тк использует маску.
Dr.Step Муж.
старожил
153
Сообщения: 7576
Зарегистрирован: 08.02.02
Откуда: Казань
Сообщение Добавлено: 29 Октябрь 2009, 19:40:44 
eddy444, В принципе, если некоторое время этим заниматься, код не будет так пугать. На данный момент я нахожу то что мне более менее подходит, декомпилю и угрюмо пытаюсь понять что к чему.

Сейчас я имею три кода работающих вместе:

Upd: Забыл сказать, здесь скрипт не только панорамки подгоняет, а пишет сбоку название картинки

Код:
var app;
_global.jump = function (i)
{
    var _loc4 = _root.xxx.getDepth();
    image.removeMovieClip();
    ++i;
    trace (i);
    var _loc3 = new Array("", "холл", "комната отдыха", "гостинная", "комната отдыха", "душевая", "парилка");
    _root._label.text = _loc3[i];
    app = new Slider2("/swf/tu/" + String(i) + ".swf", _loc4);
};
jump(0);
trace (app);


#
Код:
initclip 1
class Slider2
{
    var dep, image, target, rect, mouse, x_pos, y_pos, mc_loader, r_img, r_mask;
    function Slider2(file, d)
    {
        dep = d;
        image = _root.createEmptyMovieClip("image", dep - 1);
        image._x = 0;
        image._y = 0;
        image.cacheAsBitmap = true;
        target = _root;
        rect = new flash.geom.Rectangle(0, 0, Stage.width, Stage.height);
        mouse = new flash.geom.Point(0, 0);
        x_pos = 0;
        y_pos = 0;
        this.load(file);
    } // End of the function
    function load(file)
    {
        mc_loader = new MovieClipLoader();
        mc_loader.addListener(this);
        mc_loader.loadClip(file, image);
    } // End of the function
    function onLoadInit(tg)
    {
        r_img = new flash.geom.Rectangle(0, 0, image._width, image._height);
        r_mask = new flash.geom.Rectangle(image._x, image._y, rect.width, rect.height);
        this.start();
    } // End of the function
    function onLoadProgress(tg, bytesLoaded, bytesTotal)
    {
    } // End of the function
    function onLoadComplete(tg)
    {
    } // End of the function
    function start()
    {
        image.scrollRect = rect;
        image.onEnterFrame = mx.utils.Delegate.create(this, enterframe);
    } // End of the function
    function enterframe()
    {
        mouse.x = target._xmouse;
        mouse.y = target._ymouse;
        if (r_mask.containsPoint(mouse))
        {
            y_pos = Math.abs(image._y - mouse.y) / rect.height * (r_img.height - rect.height);
            x_pos = Math.abs(image._x - mouse.x) / rect.width * (r_img.width - rect.width);
        } // end if
        rect.x = rect.x + (x_pos - rect.x) / 8;
        rect.y = rect.y + (y_pos - rect.y) / 8;
        image.scrollRect = rect;
    } // End of the function
} // End of Class
#endinitclip


Код:
#initclip 2
class mx.utils.Delegate extends Object
{
    var func;
    function Delegate(f)
    {
        super();
        func = f;
    } // End of the function
    static function create(obj, func)
    {
        var _loc2 = function ()
        {
            var _loc2 = arguments.callee.target;
            var _loc3 = arguments.callee.func;
            return (_loc3.apply(_loc2, arguments));
        };
        _loc2.target = obj;
        _loc2.func = func;
        return (_loc2);
    } // End of the function
    function createDelegate(obj)
    {
        return (mx.utils.Delegate.create(obj, func));
    } // End of the function
} // End of Class
#endinitclip


По сути уже работающую так как мне нужно флешку, но когда я её экспортирую картинки просто переключаются, но абсолютно статичны.
А в дебагере флешка работает. Хоть плачь. И вроде можно было бы скинуть всю эту байду специалисту по экшн скрипту и он за 15 минут всё бы настроил, но тогда спрашивается куда девать потраченных два дня :killanasshole: Сегодня уже 17 рабочий час пошёл.
Я хочу понять почему эта фигня не работает :laugh:

_________________
Добрым словом и Пистолетом всегда можно добится большего, чем просто Добрым словом. (с)
*   Список форумов / Технологии изображения / Flash « | » » ответить » создать топик
 Страница 1 из 1 [ Сообщений: 9 ] 
Показать сообщения за:   Поле сортировки  
Найти:
Перейти:  
Уровень доступа: Вы не можете начинать темы. Вы не можете отвечать на сообщения. Вы не можете редактировать свои сообщения. Вы не можете удалять свои сообщения. Вы не можете добавлять вложения.
cron


ООО ДеФорум
При использовании материалов сайта ссылка на DeForum.ru — обязательна.
Проект Павла Батурина ©2001-2077; // Powered by phpBB © 2013 phpBB Group
Rambler's Top100