Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > ActionScript 1.0/2.0

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Закрытая тема
Старый 31.08.2007, 12:02
Ляксей вне форума Посмотреть профиль Отправить личное сообщение для Ляксей Найти все сообщения от Ляксей
  № 31  
Ляксей

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

Старый 15.10.2007, 23:04
kim2 вне форума Посмотреть профиль Отправить личное сообщение для kim2 Найти все сообщения от kim2
  № 32  
kim2

Регистрация: Jan 2006
Сообщений: 17
Отправить сообщение для kim2 с помощью ICQ
По умолчанию Custom cursor + Directional Motion Blur (AS3)

Назначается произвольный курсор c эффектом размытия при движении.
Как известно эффект размытия во flash действует только вдоль оси x или y и не подвержен повороту на какой-либо угол, в этом примере обходится этот недочет. Реализован на AS3
Вложения
Тип файла: zip CursorMotionBlur.zip (11.5 Кб, 1804 просмотров)

Старый 25.10.2007, 14:18
Kikasso вне форума Посмотреть профиль Отправить личное сообщение для Kikasso Найти все сообщения от Kikasso
  № 33  
Kikasso
 
Аватар для Kikasso

Регистрация: Oct 2006
Адрес: spb.ru
Сообщений: 3,221
Водим мышкой.
Вложения
Тип файла: rar starClick5.rar (13.5 Кб, 1739 просмотров)

Старый 22.11.2007, 18:41
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 34  
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
Код:
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();
	}
}
Немного измененный код эффекта "Айрис" (добавлены варианты "Звезда" и "Сердце" %) Мож кому пригодится )
__________________
Hell is the possibility of sanity

Старый 12.12.2007, 18:07
ulik вне форума Посмотреть профиль Отправить личное сообщение для ulik Посетить домашнюю страницу ulik Найти все сообщения от ulik
  № 35  
ulik
 
Аватар для ulik

Регистрация: Apr 2007
Адрес: Moscow city
Сообщений: 286
Отправить сообщение для ulik с помощью ICQ
Post Исходник.

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

Кодируем....
Вложения
Тип файла: rar code_decode.rar (80.3 Кб, 686 просмотров)
__________________
Дизайн, как презерватив - каждому жмет по-своему © Я
мое: блог форум

Старый 25.12.2007, 10:44
f3ath вне форума Посмотреть профиль Отправить личное сообщение для f3ath Найти все сообщения от f3ath
  № 36  
f3ath
[+4 28.12.07]

Регистрация: Dec 2007
Сообщений: 8
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;
	}
	
}

Старый 25.12.2007, 10:54
f3ath вне форума Посмотреть профиль Отправить личное сообщение для f3ath Найти все сообщения от f3ath
  № 37  
f3ath
[+4 28.12.07]

Регистрация: Dec 2007
Сообщений: 8
Итератор как в 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);
	}
}

Старый 25.12.2007, 10:56
f3ath вне форума Посмотреть профиль Отправить личное сообщение для f3ath Найти все сообщения от f3ath
  № 38  
f3ath
[+4 28.12.07]

Регистрация: Dec 2007
Сообщений: 8
Фабрика
Код:
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;
	}
}

Старый 02.03.2008, 03:50
D12 вне форума Посмотреть профиль Отправить личное сообщение для D12 Найти все сообщения от D12
  № 39  
D12
меценат
 
Аватар для D12

блогер
Регистрация: Jan 2004
Адрес: D
Сообщений: 1,592
Записей в блоге: 2
По умолчанию Горизонтаьное меню

Название: Meny.jpg
Просмотров: 4975

Размер: 7.3 Кб
swf-ссылка для просмотра: Meny
Вложения
Тип файла: rar Meny.rar (54.6 Кб, 907 просмотров)
__________________
Безвыходных положений небывает © Барон Мюнхаузен=)Исходники

Старый 19.03.2008, 00:45
D12 вне форума Посмотреть профиль Отправить личное сообщение для D12 Найти все сообщения от D12
  № 40  
D12
меценат
 
Аватар для D12

блогер
Регистрация: Jan 2004
Адрес: D
Сообщений: 1,592
Записей в блоге: 2
По умолчанию Круглое меню

Название: Image1.jpg
Просмотров: 4819

Размер: 47.6 Кб
swf-ссылка для просмотра:swf
Присутствует два эффекта отображения
Вложения
Тип файла: rar Meny2.rar (65.7 Кб, 847 просмотров)
__________________
Безвыходных положений небывает © Барон Мюнхаузен=)Исходники


Последний раз редактировалось D12; 19.03.2008 в 01:01. Причина: Прошу удалить, уже перенёс в нужный раздел
Создать новую тему Закрытая тема Часовой пояс GMT +4, время: 11:31.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


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


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