Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Серверные технологии и Flash (http://www.flasher.ru/forum/forumdisplay.php?f=62)
-   -   Flash 8 учимся... я про себя :) (http://www.flasher.ru/forum/showthread.php?t=73208)

Andromed 21.12.2005 16:26

Ну и наверно последнее.. чтото больше нетпридумывается вроде почти все новое расмотрели :) из интересного.
и так Scale9Grid позволяет ресайзить картинку не изменяя ее границ.. очень полезно для кнопок и прочего, обратите внимание что scale9 можно включать прямо в бибилиотекте объекта (не програмно), для этого нужно зайти в propertis объекта и снизу поставить галочку Enable Guides for 9-slice scaling, сразу в нутри мувика появятся 4 линии и сетка, с помощью которых можно выстовить границы, програмно же все сводится к тому чтобы задать прямоуголник и присвоить его параметру 9scale

var grid:flash.geom.Rectangle = new flash.geom.Rectangle(x,y, width, height);
MC.scale9Grid = grid;

и так пример
http://www.vipsauna.com/test/Scale9.html
исходник
http://www.vipsauna.com/test/Scale9.fla

код без комментов :), так как основа кода это раскрашивание и обработка событий, сам скале только в 2 строчках, да кстати если внутри мувиклипа у вас есть др мувики и вы применили scale9Grid, то внутренние мувики будут отображаться некорректно, это есть небольшой минус

Код:

import flash.geom.*;
Stage.scaleMode = 'noScale';
this.createEmptyMovieClip("Nitka", 1);
vintik.swapDepths(Nitka);
var Shadow = new flash.filters.DropShadowFilter(10, 30, 0x000000, 10, 50, 50, 1, 2, false, false, false);
pic.filters = [Shadow];
Nitka.filters = [Shadow];
var manipulate = new flash.geom.Point(0, 0);
var old_mouse;
var new_mouse;
var border = 10;
var left = -pic._width/2+border;
var top = -pic._height/2+border;
var right = pic._width/2-border;
var buttom = pic._height/2-border;
var grid:Rectangle = new Rectangle(left, top, right-left, buttom-top);
pic.scale9Grid = grid;
var fly = true;
var center = new flash.geom.Point(150, 150);
var gradient_matrix:Matrix = new Matrix();
gradient_matrix.createGradientBox(30, 30, 0, 0, 0);
onEnterFrame = function () {
        gradient_matrix.rotate(0.03);
        gradient_matrix.translate(5, 0);
        pic.clear();
        pic.beginGradientFill("radial", [0x000000, 0xFF6600], [100, 100], [0, 0xFF], gradient_matrix, "reflect", "linearRGB", 0.5);
        pic.moveTo(left, top);
        pic.lineTo(right, top);
        pic.lineTo(right, buttom);
        pic.lineTo(left, buttom);
        pic.lineTo(left, top);
        pic.endFill();
        Nitka.clear();
        Nitka.lineStyle(1, 0xffFFff, 50, true, "none", "round", "miter", 1);
        Nitka.moveTo(pic._x-pic._width/2, pic._y-pic._height/2);
        Nitka.lineTo(vintik._x, vintik._y);
        Nitka.lineTo(pic._x+pic._width/2, pic._y-pic._height/2);
        if (fly) {
                var point = new flash.geom.Point(pic._x, pic._y);
                var distance = Point.distance(point, center);
                var angle = Math.atan2(point.x-center.x, point.y-center.y);
                pic._x -= distance*Math.sin(angle)/7;
                pic._y -= distance*Math.cos(angle)/7;
                if (distance<2) {
                        fly = false;
                }
        }
};
pic.onPress = function() {
        fly = false;
        var bounds = this.getBounds(this._parent);
        trace(bounds);
        if (_xmouse<bounds.xMin+border) {
                manipulate.x = -1;
        } else if (_xmouse>bounds.xMax-border) {
                manipulate.x = 1;
        } else {
                manipulate.x = 0;
        }
        if (_ymouse<bounds.yMin+border) {
                manipulate.y = -1;
        } else if (_ymouse>bounds.yMax-border) {
                manipulate.y = 1;
        } else {
                manipulate.y = 0;
        }
        trace(manipulate);
        old_mouse = new flash.geom.Point(_xmouse, _ymouse);
        this.onMouseMove = scalePictureMouseMove;
};
pic.onRelease = pic.onReleaseOutside=function () {
        fly = true;
        delete this.onMouseMove;
};
function scalePictureMouseMove() {
        new_mouse = new flash.geom.Point(_xmouse, _ymouse);
        var diff_mouse = new_mouse.subtract(old_mouse);
        this._width += manipulate.x*diff_mouse.x;
        this._height += manipulate.y*diff_mouse.y;
        var isDragging = Boolean(manipulate.x == 0 && manipulate.y == 0);
        if (manipulate.x<0 || isDragging) {
                this._x += diff_mouse.x;
        }
        if (manipulate.y<0 || isDragging) {
                this._y += diff_mouse.y;
        }
        old_mouse = new_mouse;
}


MOHCTEP 21.12.2005 16:51

:eek: Упсь! :D Бум пробовать!
Andromed! Букет решпектов тебе! Эх! Жаль, пивка с тобой не попить!

Верас Ольга 21.12.2005 17:03

Присоединяюсь с букетом

Andromed 21.12.2005 17:05

спасибо :) насчет пива я подумаю ;) а за букет респектов :) отдельное спасибо

whiteRed 01.07.2006 15:30

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


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

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