Форум 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=80392)

Ляксей 31.08.2007 12:02

Open Source проект от Flash Menu Labs
Вертикальное Меню
структура и настройки читаются из XML
графика и анимация задаётся во fla-файле

kim2 15.10.2007 23:04

Custom cursor + Directional Motion Blur (AS3)
 
Вложений: 1
Назначается произвольный курсор c эффектом размытия при движении.
Как известно эффект размытия во flash действует только вдоль оси x или y и не подвержен повороту на какой-либо угол, в этом примере обходится этот недочет. Реализован на AS3

Kikasso 25.10.2007 14:18

Вложений: 1
Водим мышкой.

wvxvw 22.11.2007 18:41

Код:

import mx.transitions.Transition;
import mx.transitions.TransitionManager;

class mx.transitions.Iris extends Transition {

        #include "Version.as"

        public static var SQUARE:String = "SQUARE";
        public static var CIRCLE:String = "CIRCLE";
        public static var HEART:String = "HEART";
        public static var STAR:String = "STAR";

        public var type:Object = Iris;
        public var className:String = "Iris";
       
        private var _mask:MovieClip;
        private var _startPoint:Number = 5;
        private var _cornerMode:Boolean;
        private var _shape:String = "CIRCLE";
        private var _rays:Number = 5;
        private var _maxDimension:Number;
        private var _minDimension:Number;
        private var _renderShape:Function;

        function Iris (content:MovieClip, transParams:Object, manager:TransitionManager) {
                this.init (content, transParams, manager);
        };
       
        function init (content:MovieClip, transParams:Object, manager:TransitionManager):Void {
                //trace ("Iris.init()");
                super.init (content, transParams, manager);
                if (transParams.startPoint) {this._startPoint = transParams.startPoint};
                if(transParams.shape.length) this._shape = transParams.shape;
                if(!isNaN(transParams.rays)) this._rays = transParams.rays;
                this._maxDimension = Math.max (this._width, this._height);
                this._minDimension = Math.min (this._width, this._height);
               
               
                // if _startPoint is an odd number, it's a corner
                if (this._startPoint % 2) {
                        this._cornerMode = true;
                }
                // assign the render function dynamically based on shape choice
                if (this._shape == "SQUARE") {
                        if (this._cornerMode) {
                                this._render = this._renderSquareCorner;
                        } else {
                                this._render = this._renderSquareEdge;
                        }
                } else if (this._shape == "CIRCLE") {
                        this._render = this._renderCircle;
                } else if (this._shape == "HEART"){
                        this._render = this._renderHeart;
                } else if (this._shape == "STAR"){
                        this._render = this._renderStar;
                }

                this._initMask();
        };

        function start ():Void {
                this._content.setMask (this._mask);
                super.start();
        }
       
        function cleanUp ():Void {
                this._mask.removeMovieClip();
                super.cleanUp();
        }

       
        private function _initMask ():Void {
                var container:MovieClip = this._content;
                var depth:Number = this.getNextHighestDepthMC (container);
               
                var mask:MovieClip = this._mask = container.createEmptyMovieClip ("__mask_Iris_"+this.direction, depth);
                //mask._alpha = 30;
                mask._visible = false;
                var ib:Object = this._innerBounds;
               
                switch (this._startPoint) {
                        case 1:
                        // top left
                                mask._x = ib.xMin;
                                mask._y = ib.yMin;
                                break;
                        case 4:
                        // left
                                mask._x = ib.xMin;
                                mask._y = (ib.yMin + ib.yMax) * .5;
                                break;
                        case 3:
                        // top right
                                mask._rotation = 90;
                                mask._x = ib.xMax;
                                mask._y = ib.yMin;
                                break;
                        case 2:
                        // top center
                                mask._rotation = 90;
                                mask._x = (ib.xMin + ib.xMax) * .5;
                                mask._y = ib.yMin;
                                break;
                        case 9:
                        // bottom right
                                mask._rotation = 180;
                                mask._x = ib.xMax;
                                mask._y = ib.yMax;
                                break;
                        case 6:
                        // right
                                mask._rotation = 180;
                                mask._x = ib.xMax;
                                mask._y = (ib.yMin + ib.yMax) * .5;
                                break;
                        case 7:
                        // bottom left
                                mask._rotation = -90;
                                mask._x = ib.xMin;
                                mask._y = ib.yMax;
                                break;
                        case 8:
                        // bottom center
                                mask._rotation = -90;
                                mask._x = (ib.xMin + ib.xMax) * .5;
                                mask._y = ib.yMax;
                                break;
                        case 5:
                        // center
                                mask._x = (ib.xMin + ib.xMax) * .5;
                                mask._y = (ib.yMin + ib.yMax) * .5;
                                break;
                        default:
                                break;
                }
        }

        // stub--dynamically overwritten by one of the other render methods
        private function _render (p:Number):Void {}
       

        private function _renderCircle (p:Number):Void {
                var mask:MovieClip = this._mask;
                mask.clear();
                mask.beginFill (0xFF0000);
               
                if (this._startPoint == 5) {
                        // iris from center
                        var maxRadius:Number = .5 * Math.sqrt (this._width*this._width + this._height*this._height);
                        this.drawCircle (mask, 0, 0, p*maxRadius);
                } else {
                        if (this._cornerMode) {
                                // iris from corner
                                var maxRadius:Number = Math.sqrt (this._width*this._width + this._height*this._height);
                                this._drawQuarterCircle (mask, p*maxRadius);
                        } else {
                                // iris from edge
                                if (this._startPoint == 4 || this._startPoint == 6) {
                                        // half-circle from left or right edge
                                        var maxRadius:Number = Math.sqrt (this._width*this._width + .25*this._height*this._height);
                                } else if (this._startPoint == 2 || this._startPoint == 8) {
                                        // half-circle from top or bottom edge
                                        var maxRadius:Number = Math.sqrt (.25*this._width*this._width + this._height*this._height);
                                }
                                this._drawHalfCircle (mask, p*maxRadius); 
                        }
                }
                mask.endFill();
        }

        private function _drawQuarterCircle (mc:MovieClip, r:Number):Void {
                var x=0, y=0;
                mc.lineTo (r, 0);
                mc.curveTo (r+x, Math.tan(Math.PI/8)*r+y, Math.sin(Math.PI/4)*r+x, Math.sin(Math.PI/4)*r+y);
                mc.curveTo (Math.tan(Math.PI/8)*r+x, r+y, x, r+y);
        }
       
        private function _drawHalfCircle (mc:MovieClip, r:Number):Void {
                var x=0, y=0;
                mc.lineTo (0, -r);
                mc.curveTo (Math.tan(Math.PI/8)*r+x, -r+y, Math.sin(Math.PI/4)*r+x, -Math.sin(Math.PI/4)*r+y);
                mc.curveTo (r+x, -Math.tan(Math.PI/8)*r+y, r+x, y);
                mc.curveTo (r+x, Math.tan(Math.PI/8)*r+y, Math.sin(Math.PI/4)*r+x, Math.sin(Math.PI/4)*r+y);
                mc.curveTo (Math.tan(Math.PI/8)*r+x, r+y, x, r+y);
                mc.lineTo (0, 0);
        }
       
        //this._maxDimension = Math.max (this._width, this._height);
       
        private function _renderSquareEdge (p:Number):Void {
                var mask = this._mask;
                mask.clear();
                mask.beginFill (0xFF0000);
                var s = this._startPoint;
                var w = p*this._width;
                var h = p*this._height;
                var z = p*this._maxDimension;
                if(s == 4 || s == 6){
                        this.drawBox (mask, 0, -.5*h, w, h);
                }else if(this._height < this._width){
                          this.drawBox (mask, 0, -.5*z, h, w);
                }else{
                          this.drawBox (mask, 0, -.5*z, z, z);
                }
                mask.endFill();
        }
       
        private function _renderHeart(p:Number):Void {
                var d:Number = Math.min(this._width,this._height)*p;
                var k:Number = -d/2;
                var mask = this._mask;
                mask.clear();
                mask.beginFill (0xFF0000);
                mask.moveTo(k,k+d/4);
                mask.curveTo(k,k,k+d/4,k);
                mask.curveTo(k+d/2,k,k+d/2,k+d/4);
                mask.curveTo(k+d/2,k,k+d*3/4,k);
                mask.curveTo(k+d,k,k+d,k+d/4);
                mask.curveTo(k+d,k+d/2,k+d*3/4,k+d*3/4);
                mask.lineTo(k+d/2,k+d);
                mask.lineTo(k+d/4,k+d*3/4);
                mask.curveTo(k,k+d/2,k,k+d/4);
                mask.endFill();
        }
       
        private function _renderStar(p:Number):Void {
                var d:Number = Math.min(this._width,this._height)*p;
                var s:Number = Math.PI*2/this._rays;
                var mask = this._mask;
                mask.clear();
                mask.beginFill(0xFF0000);
                mask.moveTo(0,d/2);
                for(var i:Number=0; i<this._rays; i++){
                        mask.lineTo(d*.5*Math.sin(s*i),d*.5*Math.cos(s*i));
                        mask.lineTo(d*Math.sin(s*(i+.5)),d*Math.cos(s*(i+.5)));
                }
                mask.endFill();
        }
       
        private function _renderSquareCorner (p:Number):Void {
                var mask = this._mask;
                mask.clear();
                mask.beginFill (0xFF0000);
                var s = this._startPoint;
                var w = p*this._width;
                var h = p*this._height;
                if (s == 5) {
                        this.drawBox (mask, -.5*w, -.5*h, w, h);
                }else if(s == 3 || s == 7){
                        this.drawBox (mask, 0, 0, h, w);
                } else {
                        this.drawBox (mask, 0, 0, w, h);
                }
                mask.endFill();
        }
}

Немного измененный код эффекта "Айрис" (добавлены варианты "Звезда" и "Сердце" %) Мож кому пригодится )

ulik 12.12.2007 18:07

Исходник.
 
Вложений: 1
Вот решил сделать шифратор/дешифратор. Кто-то просил.
Все удовольсвие - 11 строк кода.
Шифрует / дешифрует данные. Зашифрованный текст можно вставить, скажем в новый txt файл, сохранить в режиме UTF-8 !!!! и отправить, знакомому агенту :)))):victory:

Кодируем....

f3ath 25.12.2007 10:44

Tooltip, он же Hint, он же всплывающая подсказка, на AS 2.0. Рабочий вариант класса, который использован мной в готовом приложении. Выкладываю as is, кому нужно, тот разберется.

Код:

class Tooltip
{
        private var clientList:Array;
        private var currentHintIndex;
        private var globalMovieClip; // movieClip to get mouse coordinates from, usually _root?
       
        private var xMouseValue, yMouseValue:Number;
        private var delayCounter:Number;

        private var hitTestCalled:Boolean;
       
        public static var interval:Number = 50; // ticks interval in millisec
        public static var delay:Number = 700; // delay mouse stops and before hint shown
        public static var movieClipName; // movieclip himself
       
        private var hint;
       
        public function Tooltip()
        {
                clientList = [];
                globalMovieClip = _root;
                xMouseValue = globalMovieClip._Xmouse;
                yMouseValue = globalMovieClip._Ymouse;
                delayCounter = 0;
                hitTestCalled = false;
                setInterval(this, 'tick', interval);
        }
       
        public function tick()
        {
                if((xMouseValue == globalMovieClip._Xmouse) && (yMouseValue == globalMovieClip._Ymouse))
                {
                        delayCounter += Tooltip.interval;
                        if(delayCounter >= Tooltip.delay)
                        {
                                if(!hitTestCalled) doHitTest();
                                hitTestCalled = true;
                        };
                }
                else
                {
                        hitTestCalled = false;
                        delayCounter = 0;
                        hideCurrent();
                }
               
                xMouseValue = globalMovieClip._Xmouse;
                yMouseValue = globalMovieClip._Ymouse;
               
        }
        private function showHint(i)
        {
                currentHintIndex = i;
                if(!clientList[i].txt) return;
                hint = mx.managers.DepthManager.createObjectAtDepth('HintMovieClip', mx.managers.DepthManager.kTooltip);
                hint.txt.text = clientList[i].txt;
                hint._x = globalMovieClip._Xmouse + 10;
                hint._y = globalMovieClip._Ymouse + 10;
                hint.setDepthTo(mx.managers.DepthManager.kTooltip);
        }

        private function hideHint(i)
        {
                currentHintIndex = undefined;
                hint.removeMovieClip();
        }
       
        private function hideCurrent()
        {
                if(undefined == currentHintIndex) return;
                hideHint(currentHintIndex);
        }
       
        private function doHitTest()
        {
               
                var mc = getTopmostVisibleMC(_root._Xmouse, _root._Ymouse, _root);
                //trace('topmost='+mc);
                var index = clientList.getIndexByProp('mc', mc)
               

                if(undefined != index)
                {
                        showHint(index);
                }
                else
                {
                        sweep(); //while we're in idle
                }
        }
       
        public function registerClient(mc, txt:String)
        {
                var i = clientList.getIndexByProp('mc', mc);
                if(undefined == i)
                {
                        clientList.push({mc:mc, txt:txt});
                }
                else
                {
                        clientList[i].txt = txt;
                }
        }

        public function removeClient(mc)
        {
                var i = clientList.getIndexByProp('mc', mc);
                if(undefined == 1) return;
                clientList.splice(i, 1);
        }
       
        public function sweep()
        {
                var sweepedList:Array = [];
                for(var i:Number = 0; i < clientList.length; i++)
                {
                        if(clientList[i].mc) sweepedList.push(clientList[i]);
                }
                clientList = sweepedList;
        }
       
        public function get length():Number
        {
                return clientList.length;
        }
       
        private function getTopmostVisibleMC(x, y, papa)
        {
                var candidate = undefined;

                for(var foo in papa)
                {
                        if('movieclip' == typeof(papa[foo]))
                        {
                                if(!candidate && papa[foo]._visible)
                                {
                                        if(papa[foo].hitTest(x, y, true)) candidate = papa[foo];
                                }
                                else
                                {
                                        if((candidate.getDepth() < papa[foo].getDepth()))
                                        {
                                                if(papa[foo]._visible && papa[foo].hitTest(x, y, true))
                                                {
                                                        candidate = papa[foo];
                                                        //trace('ht='+candidate+'@'+candidate.getDepth());
                                                }
                                        }
                                }
                        }
                }
                return candidate;
        }
       
}


f3ath 25.12.2007 10:54

Итератор как в php5

Интерфейс:
Код:

interface Iterator // this is interface actually, identical to PHP5 iterator
{
        // Returns the current value
        public function current();
 
        // Returns the current key
        public function key();
 
        // Moves the internal pointer to the next element
        public function next():Void
 
        // Moves the internal pointer to the first element
        public function rewind():Void;
 
        // If the current element is valid (boolean)
        public function valid():Boolean;
}

Итератор для массива
Код:

class ArrayIterator implements Iterator
{
        private var p:Number;
        private var a:Array;
       
        public function ArrayIterator(arr)
        {
                this.a = arr;
                this.p = 0;
        }
       
        // Returns the current value
        public function current()
        {
                return a[p];
        }
       
 
        // Returns the current key
        public function key()
        {
                return p;
        }
 
        // Moves the internal pointer to the next element
        public function next():Void
        {
                this.p++;
        }

        // Moves the internal pointer to the previuos element
        public function prev():Void
        {
                this.p--;
        }
       
 
        // Moves the internal pointer to the first element
        public function rewind():Void
        {
                this.p = 0;
        }

        // Moves the internal pointer to the last element
        public function ff():Void
        {
                this.p = (this.a.length - 1) ;
        }
 
        // If the current element is valid (boolean)
        public function valid():Boolean
        {
                return Boolean(this.p < this.a.length);
        }
}


f3ath 25.12.2007 10:56

Фабрика
Код:

class Factory
/*
        Factory class

example:

//create factory object for class myClass
// myClass.id - unique identifier of myClass instances
var myFactory = Factory.getFactoryFor('myClass', 'id');

//create myClass object
var myObject = myFactory.create(123);
// myObject is now instance of myClass
// myObject.id == 123

var myObject1 = myFactory.create(123);
// myObject1 is alias of myObject
// myObject1.id == myObject.id == 123

var myObject2 = myFactory.create(321);
// myObject2.id = 321
// myObject2 != myObject1
*/
{
        var className:String;
        var idName:String;
        var cache:Array;
        static var selfCache:Array;
       
        private function Factory(className:String, idName:String)
        {
                this.className = className;
                this.idName = idName;
                this.cache = new Array;
        };
       
        public static function getFactoryFor(className:String, idName:String)
        {
                if(!selfCache[className])
                {
                        if(!selfCache) selfCache = new Array;
                        selfCache[className] = new Factory(className, idName);
                        if(!selfCache[className]) trace('ERROR: can not create Factory');
                }
                return selfCache[className];
        }

        private function safeNew(className)
        {
                var obj = new [className]; // create object
                if(!obj) trace("ERROR: can not instantiate '"+className+"' object"); // error
                return obj;
        }
       
        public function create(initData)
        {
                var obj:Object;
                if(this.idName) // id field specified
                {// use cache
                        if(this.cache[initData[this.idName]]) // found in cache
                        { // return cached object
                                return this.cache[initData[this.idName]];
                        }
                        else
                        { // create instance
                                this.cache[initData[this.idName]] = this.safeNew(this.className); // save in cache
                        };
                        obj = this.cache[initData[this.idName]];
                }
                else // id field not specified
                { // no cache
                        obj = this.safeNew(this.className);
                };
                var foo:String; // iterator
                for(foo in initData)
                {
                        obj[foo] = initData[foo]; // assign property
                };
                return obj;
        }
}


D12 02.03.2008 03:50

Горизонтаьное меню
 
Вложений: 2
Вложение 18949
swf-ссылка для просмотра: Meny

D12 19.03.2008 00:45

Круглое меню
 
Вложений: 2
Вложение 19102
swf-ссылка для просмотра:swf
Присутствует два эффекта отображения


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

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