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

BigDan 28.05.2006 00:11

ИСХОДНИКИ [вопросы здесь не задаем, благодарность не выражаем]
 
Исходники ActionScript 1.0/2.0
1.3D bukva m
2.Animoushen vpered nazad
3.Dvijenie rolika na mesto clica
4.Gostevaa kniga
5.Game Moonlander
6.illuzia na 3D smail
7.menu kontrollera
8.mouse pokidaet raboshee pole
9.povorot za kursorom
10.primer pazzla
11.Game worm
12.primer localConnection
13.primer menu
14.primer polzunok
15.primer SharedObject
16.akrannaa klaviatura
17.krugovia dvijenia poliarnie koordinaty
18.primer raskraski
19.programni obhot prepatstwia
20.test
21.effect Screenserver
22.polzun
23.risuem scriptom krug
24.scroll
25.dvijenie po parabole
26.menu xml
27.podshiniaem kadri kursoru
28.poligon
29.textura
30.upravlenia color
31.blur
34.primer game ot D12
35.primerD12
36.RadiusText
38.gallerea
39.preloader
40.linza
41.player
43.AsBroadcaster
44.Color Change
45.HitTest for 2 clip
46.Move clip
47.MovieClipLoader
48.Right Click
49.Plavnoe dviz
50.LightPaint
51.Pomehi
52.FileWriter
53.3D Piramida
54.Sledi
55.primer
56.send&load
57.airhokkey
58.drugoe
59.line
60.class_zs
61.simple_tip
62.tip
63.anti_mat
64.cool_clock
65.real_phisics_4kb
66.textSearch_class
67.crypt
68.draw
69.php_registr
70.loader_as
71.LoadVars+php+xml
72.Paint
73.Меню
74.Вращающее меню
75.разложение числа на простые множители
76.Добавка к mx.transitions, позволяет анимировать картинку из цветной к монохромной произвольного оттенка.
77.Класс, позволяющий на основе XML-файла, получить объект отражающий его структуру
78.Класс содержит несколько функций для работы со стоками
79.Вертикальное Меню
80.Колебания, маятник
81.starClick5
Исходники ActionScript 3.0
1.Clock
2.AddEventListener
3.Attach MovieClip to Display
4.My Event
5.Working with keyboard
6.Working with text
7.RightDrag
8.SimpleButton
9.Using Filters
10.DownloadManager
11.ManyListeners
12.Custom cursor + Directional Motion Blur

Nirth 28.05.2006 01:15

насчет имен исходников, у меня браузер\винды\флэш и вообще все английское, и лично у меня не открывается не исходник где в названии присутствует кирилица.

вот что пишут
Цитата:

! C:\Documents and Settings\David\My Documents\???????? ????????.zip: Cannot open C:\Documents and Settings\David\My Documents\???????? ????????.zip
The filename, directory name, or volume label syntax is incorrect.

dimel 16.06.2006 10:32

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

KUZEN 16.06.2006 12:23

Цитата:

Сообщение от BigDan
Выкладывайте свои исходники. Только выкладывайте интересное. Пишите какое-то описание к вашим исходникам.
Пожалуйста, не выкладывайте всякую чушь.

Ты уже сам выложил кучу всякой чуши ...

xok 04.10.2006 17:04

Вложений: 1
Данный калькулятор создавался для закрепления знаний и понимания AS, поэтому дизайн в калькуляторе отсутствует. Отличительной особенностью данного продукта является, то что цифры в дисплее калькулятора НАРИСОВАННЫЕ.
В калькуляторе реализованы функции сложения, вычитания, умножения, деления, извлечения квадратного корня, возведения в любую степень(ограничивается кол-вом цифр отображаемых на дисплее), функцией памяти.
Реализован режим горячих клавиш (клавиши Enter в калькуляторе клавиша "=" и клавиша Esc в калькуляторе клавиша "AС" работают только во встроенном редакторе flash).

Mr. Fixit 30.10.2006 17:43

супер игра про ниндзю... зделано в Флеше.
Очень классно http://www.harveycartel.org/metanet/downloads.html

BigDan 10.11.2006 22:19

Вложений: 5
......

BigDan 10.11.2006 22:20

Вложений: 5
.........

BigDan 13.11.2006 23:41

Вложений: 2
...............

NtM 09.12.2006 10:19

Ссылка на хорошие демо
 
Это к книге Бхангал Ш. Flash 8 Трюки
там есть пример переворачивания страниц, даже с теорией

http://examples.oreilly.com/flashhks/

Arhitector 20.12.2006 12:09

Вложений: 1
Исходник пара
Вложение 16031

CorC 27.12.2006 16:38

Вложений: 1
пример использования LoadVars
сохранение в файл при помощи PHP
загрузка данных опять с LoadVars

BigDan 02.01.2007 18:02

Вложений: 1
Исходник часов на АС3

LeXi42006 09.01.2007 18:02

Вложений: 1
А вот простая рисовалка.

BigDan 13.01.2007 18:23

Вложений: 5
Вот сделал небольшие исходники для начинающих в AS3

BigDan 14.01.2007 16:10

Вложений: 3
Вот еще

wvxvw 04.03.2007 17:23

Добавка к mx.transitions, позволяет анимировать картинку из цветной к монохромной произвольного оттенка.
Код:

/***********************************************************************
* SEPIA TRANSITION CLASS-FILE
* put this file into [Flas 8 folder]\en\First Run\Classes\mx\transitions
* restart Flash
* ----------------------------------------------------------------------
* SAMPLE USAGE:
* import mx.transitions.*;
* import mx.transitions.easing.*;
* TransitionManager.start([linkage to your MovieClip],
                                                  {type:Sepia,
                                                  direction:Transition.[IN or OUT],
                                                  duration:[seconds:Number],
                                                  easing:None.easeNone,
                                                  tint:[256 bit color:Number]});
* ----------------------------------------------------------------------
* © WVXVW
************************************************************************/
import mx.transitions.Transition;
import mx.transitions.TransitionManager;
import flash.filters.ColorMatrixFilter;
class mx.transitions.Sepia extends Transition {
        #include "Version.as"
        public var type:Object = Sepia;
        public var className:String = "Sepia";
        private var myColorMatrix_filter:ColorMatrixFilter;
        private var __tgt:MovieClip;
        private var __tint:Number = 0x000000;
        private var __to:Object = {};
        function Sepia(content:MovieClip, transParams:Object, manager:TransitionManager) {
                this.init(content, transParams, manager);
        }
        function init(content:MovieClip, transParams:Object, manager:TransitionManager):Void {
                super.init(content, transParams, manager);
                this.myColorMatrix_filter = new ColorMatrixFilter();
                this.__tgt = content;
                this.__tint = transParams.tint;
                this.__to = toRGB(this.__tint);
        }
        private function _render(p:Number):Void {
                var rc:Number = 0.3086;
                var gc:Number = 0.6094;
                var bc:Number = 0.0820;
                var myElements_array:Array = [1-p*(1-rc)+this.__to._r*p, p*gc, p*bc, 0, 0,
                                                                          p*rc, 1-p*(1-gc)+this.__to._g*p, p*bc, 0, 0,
                                                                          p*rc, p*gc, 1-p*(1-bc)+this.__to._b*p, 0, 0,
                                                                          0, 0, 0, 1, 0];
                this.myColorMatrix_filter = new ColorMatrixFilter(myElements_array);
                this.__tgt.filters = [myColorMatrix_filter];
        }
        private function toRGB(_num:Number):Object {
                var c_obj:Object = {_r:((_num >> 16) & 0xff)/255, _g:((_num >> 8) & 0xff)/255, _b:(_num & 0xff)/255};
                return c_obj;
        }
}


BigDan 26.03.2007 22:31

В первом посте я собрал все исходники в одну кучу для удобства.

Sp1R1t 04.04.2007 13:52

Вложений: 1
маленькое добавление к рисовалке
позволяет создавать прямые линии

goder 22.04.2007 18:37

Вложений: 1
Небольшой класс для обмена через LoadVars
может кому понадобится
ногами не пинать за некоторые недоделки :)

ulik 24.04.2007 17:58

Стильная подсказка
 
Вложений: 1
Это просто стильная подсказка. Для тех, кто начинает учить flash.
Плюс ее в том, что она меняет свою ширину в зависимости от ширины текста. Просто и симпотно.
В *.fla пояснял каждую строку. Я думаю, любой начинающий поймет.
Вот собссссна...

MINASTIS 24.04.2007 19:47

Вложений: 1
Обычная подсказка с гибким размером. Мой вариант.
Без комментариев в коде, но думаю все поймут.

ulik 25.04.2007 00:38

Вложений: 5
textSearch_class.rar - учимся писать свои Классы
real_phisics_4kb.rar - как при помощи AS и 4 кб сделать реальнуб физику движения и нормальный хиттест (не используя hitTest естессно). Матаматика - сила.
anti_mat.rar - ищем матерные слова (даже сложные-составные) по корню слова из XML файла (например слово: ху*бл*ндия и т.д.)
cool_clock.rar - очередной подход к часикам. Есть замедление времени.
crypt.rar - шифруем данные побайтным сдвигом по ключевому слову (шоб никто не узнал че пишем :))

Качаем. Смотрим. Учим. :umnik2:

зы: real_phisics - в нем не дописан хиттест снизу поверхностей. Извините - дел по горло. Я думаю, не сложно будет дописать, поняв принцип. Главное - y=kx+b

ulik 25.04.2007 02:40

Вложений: 1
Вот еще. Простая рисовалочка с функцией Replay (как только нарисуетесь, нажмите пробел он же "SPACE").:bye:

MINASTIS 25.04.2007 20:06

Вложений: 2
php_registr.rar - регистрация и вход пользователя во флеш используя mySQL, php скрипт и конечно as. Для работы нужен виртуальный сервер с поддержкой php и чтобы была mySQL. Скрин для настройки таблицы mySQL прилагается. Скрипт php по взаимодействию с базой с комментариями. :bye:

loader_as.rar - полностью программный прелоадер, не используя никаких инструментов рисования. Просто поставь посередине первого кадра :)

BigDan 29.04.2007 16:16

Когда выкладываете исходник, указывайте к какому разделу(AS2/AS1,AS3) он относится.

CorC 03.05.2007 13:44

Вложений: 1
Улучшение по LoadVars:
Считываение из текстового поля, передача в php,
запись в xml и вывод обратно данных из php и xml.

BigDan 08.05.2007 13:15

Вложений: 2
1.DownloadManager - пример елементарного мастера загрузок.
2.ManyListeners - ответ на вопрос "Что мне делать, когда много конопок и для каждой нужен обработчик?"

denself 08.05.2007 21:29

Посмотрите paint
 
Вложений: 1
Посмотрите, скачайте...

Kikasso 08.07.2007 04:13

Математика: разложение числа на простые множители.
Код:

Stage.align = 'TL';
mess_txt = createTextField("mess_txt", 0, 2, 2, 300, 20 );
mess_txt.autoSize = 'left';
mess_txt.text = 'Введите число и нажмите на кнопку. 15 знаков максимум.';

num_txt = createTextField("num_txt", 1, 4, 24, 200, 20 );
num_txt.type = 'input'; num_txt.restrict = "0-9"; num_txt.border = true;

time_txt = createTextField("time_txt", 2, 4, 46, 200, 20 );
time_txt.autoSize = "left";

rez_txt = createTextField("rez_txt", 3, 4, 68, 200, 20 );
rez_txt.autoSize = "left"; rez_txt.multiline = true;

b_txt = createTextField("num_txt", 4, 212, 24, 100, 20 );
b_txt.html = true;
b_txt.htmlText = "<b><a href='asfunction:acceptAndCalculate' >[ CALCULATE ]</a> </b>";

function acceptAndCalculate():Void{       
        if(num_txt.text.length > 15){
                rez_txt.text = ' (( number too big only 15 digits plz )) ';
                return;
        }       
        var n:Number = Number(num_txt.text);
        if(isNaN(n)){
                rez_txt.text = ' (( enter number )) ';
                return;
        }
        var t:Number = getTimer();
        rez_txt.text = String(n)+' =\n'+findEm(n).join('*');
        time_txt.text = 'calculated in '+ String(getTimer() - t) + 'ms';
}
function findEm( num:Number ):Array{
        var arr:Array = [];
        var k:Number = 2;
        while( true ){
                if( k*k > num ){
                        arr.push( num );
                        break;       
                }
                if( num % k == 0 ){
                        arr.push(k);
                        num /= k;
                        continue;
                }       
                k++;
        }
        trace(arr);
        return arr;
}


Ляксей 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, время: 21:00.

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