Просмотр полной версии : выключатель
народ, как правильно сделать выключатель (кнопку с 2-мя положениями)?
пс
правильно значит красивее..
SINtez_v
23.05.2006, 16:16
Рисуеш кнопку в одном положении потом в другом ставиш между ними моушен твин и наслаждаешся плавным переключением своего руБИЛЬНИКА )))
в каком смысле выключатель?
Punk T-34
23.05.2006, 16:44
ещё 1 совет:
фотографируешь тумблер во влючённом и в выключенном состояниях. Обрабатываешь в фотошопе, импортируешь во flash.
Красиво, реалистично.
конечно остроумно, но я про код, вот мой:
on(press){
if(p ==undefined) p=0; else p++;
}
onClipEvent(enterFrame){
if(p%2 ==0) gotoAndStop(1); else gotoAndStop(2);
}
может функция есть.. какой-нибудь свитч();...
в каком смысле выключатель?
:))))
SINtez_v
23.05.2006, 19:17
Ты просил красиво тебе сказали...
Дал код свой а где вопрос ?
Что зделать то ?
Где подсказать ?
Он сказал - как лучше сделать, может у него в коде "хреновый метод" (с) =). У вас тут это любят, все ХМ называть...
Он сказал - как лучше сделать, может у него в коде "хреновый метод" (с) =). У вас тут это любят, все ХМ называть...
"ХМ" тут называют то что некорректно выложено!
так-же я не понимаю поставленой ему задачи.
если имееться ввиду как запрограммировать кнопку, так есть много разных вариантов. какой ему предложить так-же непонятно, так как нет цели.
SINtez_v
24.05.2006, 00:54
наверно имел ввиду про код.
Я вот считаю нет красивее кода написаного коротко и по делу...
Я вот считаю нет красивее кода написаного коротко и по делу...
респект! золотые слова!
простые вопросы тут задавать походу нельзя, народ чувствует подвох:)
и отвечать на свои вопросы нельзя,это наверно тоже сильно смущает:))
вы бы какой код написали, если бы вам надо было сделать кнопку с 2-мя положениями, например, скрывающую и показывающую символ?
ну ето уже ближе к делу
1. если просто 2а положения, то вполне всунуть просто 2и рисунка в саму кнопку.
2. если анимированый, посотри как зделано в прикрепленном исходнике
this.createEmptyMovieClip ("mc1", 1);
mc1.lineStyle (0, 0, 100);
mc1.beginFill (0, 100);
mc1.lineTo (100, 0);
mc1.lineTo (100, 100);
mc1.lineTo (0, 100);
mc1.lineTo (0, 0);
mc1.endFill ();
mc1.duplicateMovieClip ("mc2", 2, {_alpha:0});
mc2.onPress = function () {
if (mc1._visible) {
mc1._visible = false;
} else {
mc1._visible = true;
}
};
this.createEmptyMovieClip ("mc1", 1);
mc1.lineStyle (0, 0, 100);
mc1.beginFill (0, 100);
mc1.lineTo (100, 0);
mc1.lineTo (100, 100);
mc1.lineTo (0, 100);
mc1.lineTo (0, 0);
mc1.endFill ();
mc1.duplicateMovieClip ("mc2", 2, {_alpha:0});
mc2.onPress = function () {
if (mc1._visible) {
mc1._visible = false;
} else {
mc1._visible = true;
}
};
Какойто не реалистичный выключатель :D
Может конкурс замутить, кто нарисует выключатель програмно более реалистично
Какойто не реалистичный выключатель :D
Может конкурс замутить, кто нарисует выключатель програмно более реалистично
Он выключает и включает, куда уж более реалистично? :)
Он выключает и включает, куда уж более реалистично? :)
Вот смотрю на стенку и выключатель там совсем другой )))
Ладно, какой приз?:)
Всеобщее уважение , плюс к тому, которое ты честно заработал ;)
_root.zzz = 1;
_root.button.onPress = function() {
_root.zzz = -_root.zzz;
};
_root.onEnterFrame = function() {
if (_root.zzz == -1) {
_root.button.gotoAndStop(2);
}
if (_root.zzz == 1) {
_root.button.gotoAndStop(1);
}
};
P.S. Приз мой )))
у тебя че то еще надо рисовать в фреймах
кстати вариант
createClassObject(mx.controls.CheckBox,"CheckBox",2,{label:"Выиграл Я!"});
Сам нарисуешь )))
может мне еще хелп пойти почитать=)?
Тааак , я слышу странный звук передергивания затвора ПлюсесГан ...
Уже намекаешь ...
P.S. Кошмар кругом одно и тоже ...
P.S.2. Похоже придется еще и с Nirчем воевать и этот вошел в роль как 2 двое предыдущих , эх...
Три неверных сообщения это плюс , а то и 2 все зависит на кого нарватся.
А я считать умею поэтому невыманиш ...
P.S. Вот ситуация , верно Нирч , приходится от каждого шороха шарахатся ...
P.S.2. Признаю ты победил , твой код короче .
Вот думаю, может фирму по производству выключателей открыть? :)
import flash.geom.*;
MovieClip.prototype.createRectangle = function (x, y, width, height, radius) {
if (radius != undefined or radius > 1) {
var r = radius;
} else {
var r = 0;
}
this.moveTo (x + r, y + 0);
this.lineTo (x + width - r, y + 0);
if (r) {
this.curveTo (x + width, y, x + width, y + r);
}
this.lineTo (x + width, y + height - r);
if (r) {
this.curveTo (x + width, y + height, x + width - r, y + height);
}
this.lineTo (x + r, y + height);
if (r) {
this.curveTo (x, y + height, x, y + height - r);
}
this.lineTo (x, y + r);
if (r) {
this.curveTo (x, y, x + r, y);
}
};
////
Stage.align = "LT";
Stage.scaleMode = "noScale";
Stage.addListener (this);
this.onResize = function () {
this.mcOff._x = (Stage.width - this.mcOff._width) / 2;
this.mcOff._y = (Stage.height - this.mcOff._height) / 2;
this.mcOn._width = Stage.width - 1;
this.mcOn._height = Stage.height - 1;
};
this.createEmptyMovieClip ("mcOn", 1);
this.mcOn.lineStyle (0, 0, 0);
this.mcOn.beginFill (0x113486, 80);
this.mcOn.createRectangle (0, 0, 150, 150);
this.mcOn.endFill ();
this.mcOn._visible = false;
this.mcOn.blendMode = "multiply";
////
this.createEmptyMovieClip ("mcOff", 0);
this.mcOff.lineStyle (0, 0xCCCCCC, 100, true);
matrix = new Matrix ();
matrix.createGradientBox (250, 250, Math.PI / 4, 0, 0);
this.mcOff.beginGradientFill ("linear", [0xFFFFFF, 0xEAEAEA], [100, 100], [0, 255], matrix);
this.mcOff.createRectangle (0, 0, 250, 250, 10);
this.mcOff.endFill ();
////
this.mcOff.createEmptyMovieClip ("mcRamka", 5);
this.mcOff.mcRamka._x = this.mcOff.mcRamka._y = 50;
this.mcOff.mcRamka.lineStyle (0, 0x888888);
this.mcOff.mcRamka.createRectangle (0, 0, 150, 150);
////
this.mcOff.createEmptyMovieClip ("mcOn", 4);
this.mcOff.mcOn.createEmptyMovieClip ("mc", 0);
this.mcOff.mcOn._x = this.mcOff.mcOn._y = 50;
this.mcOff.mcOn.lineStyle (0, 0, 0);
this.mcOff.mcOn.mc.lineStyle (0, 0, 0);
this.mcOff.mcOn.beginFill (0xFFFFFF);
this.mcOff.mcOn.createRectangle (0, 0, 150, 75);
this.mcOff.mcOn.endFill ();
matrix = new Matrix ();
matrix.createGradientBox (150, 65, Math.PI / 4, 75, 0);
this.mcOff.mcOn.mc.beginGradientFill ("linear", [0xFFFFFF, 0xEAEAEA], [100, 100], [0, 255], matrix);
this.mcOff.mcOn.mc.createRectangle (0, 75, 150, 65);
this.mcOff.mcOn.mc.endFill ();
this.mcOff.mcOn.mc.beginFill (0xD7D7D7);
this.mcOff.mcOn.mc.createRectangle (0, 140, 150, 10);
this.mcOff.mcOn.mc.endFill ();
this.mcOff.mcOn.beginFill (0xCBCBCB);
this.mcOff.mcOn.moveTo (150, 75);
this.mcOff.mcOn.lineTo (150, 150);
this.mcOff.mcOn.lineTo (160, 145);
this.mcOff.mcOn.lineTo (150, 75);
this.mcOff.mcOn.endFill ();
////
this.mcOff.createEmptyMovieClip ("mcOff", 3);
this.mcOff.mcOff.createEmptyMovieClip ("mc", 3);
this.mcOff.mcOff._visible = false;
this.mcOff.mcOff._x = this.mcOff.mcOff._y = 50;
this.mcOff.mcOff.mc.lineStyle (0, 0, 0);
this.mcOff.mcOff.lineStyle (0, 0, 0);
this.mcOff.mcOff.beginFill (0xCBCBCB, 40);
this.mcOff.mcOff.moveTo (150, 0);
this.mcOff.mcOff.lineTo (150, 75);
this.mcOff.mcOff.lineTo (160, 15);
this.mcOff.mcOff.lineTo (150, 0);
this.mcOff.mcOff.endFill ();
this.mcOff.mcOff.mc.beginFill (0xE2E2E2);
this.mcOff.mcOff.mc.createRectangle (0, 0, 150, 10);
this.mcOff.mcOff.mc.endFill ();
matrix = new Matrix ();
matrix.createGradientBox (150, 65, Math.PI / 4, 75, 0);
this.mcOff.mcOff.mc.beginFill (0xFF0000);
this.mcOff.mcOff.mc.beginGradientFill ("linear", [0xFFFFFF, 0xEAEAEA], [100, 100], [0, 255], matrix);
this.mcOff.mcOff.mc.createRectangle (0, 10, 150, 65);
this.mcOff.mcOff.mc.endFill ();
this.mcOff.mcOff.beginFill (0xFFFFFF);
this.mcOff.mcOff.createRectangle (0, 75, 150, 75);
this.mcOff.mcOff.endFill ();
////
this.mcOff.mcOff.mc.onPress = function () {
this._parent._visible = false;
this._parent._parent.mcOn._visible = true;
this._parent._parent._parent.mcOn._visible = false;
};
this.mcOff.mcOn.mc.onPress = function () {
this._parent._visible = false;
this._parent._parent.mcOff._visible = true;
this._parent._parent._parent.mcOn._visible = true;
};
PS. А больше всего мне размер swf понравился :)
ладно конкурс так конкурс:)
прикольно:)
Добавим реалистичности с помощью фильтров
import flash.geom.*;
MovieClip.prototype.createRectangle = function(x, y, width, height, radius) {
if (radius != undefined or radius>1) {
var r = radius;
} else {
var r = 0;
}
this.moveTo(x+r, y+0);
this.lineTo(x+width-r, y+0);
if (r) {
this.curveTo(x+width, y, x+width, y+r);
}
this.lineTo(x+width, y+height-r);
if (r) {
this.curveTo(x+width, y+height, x+width-r, y+height);
}
this.lineTo(x+r, y+height);
if (r) {
this.curveTo(x, y+height, x, y+height-r);
}
this.lineTo(x, y+r);
if (r) {
this.curveTo(x, y, x+r, y);
}
};
////
Stage.align = "LT";
Stage.scaleMode = "noScale";
Stage.addListener(this);
this.onResize = function() {
this.mcOff._x = (Stage.width-this.mcOff._width)/2;
this.mcOff._y = (Stage.height-this.mcOff._height)/2;
this.mcOn._width = Stage.width-1;
this.mcOn._height = Stage.height-1;
};
this.createEmptyMovieClip("mcOn", 1);
this.mcOn.lineStyle(0, 0, 0);
this.mcOn.beginFill(0x113486, 80);
this.mcOn.createRectangle(0, 0, 150, 150);
this.mcOn.endFill();
this.mcOn._visible = false;
this.mcOn.blendMode = "multiply";
////
this.createEmptyMovieClip("mcOff", 0);
this.mcOff.lineStyle(0, 0xCCCCCC, 100, true);
matrix = new Matrix();
matrix.createGradientBox(250, 250, Math.PI/4, 0, 0);
this.mcOff.beginGradientFill("linear", [0xFFFFFF, 0xEAEAEA], [100, 100], [0, 255], matrix);
this.mcOff.createRectangle(0, 0, 250, 250, 10);
this.mcOff.endFill();
////
this.mcOff.createEmptyMovieClip("mcRamka", 5);
this.mcOff.mcRamka._x = this.mcOff.mcRamka._y=50;
this.mcOff.mcRamka.lineStyle(0, 0x999999);
this.mcOff.mcRamka.createRectangle(0, 0, 150, 150);
////
this.mcOff.createEmptyMovieClip("mcOn", 4);
this.mcOff.mcOn.createEmptyMovieClip("mc", 0);
this.mcOff.mcOn._x = this.mcOff.mcOn._y=50;
this.mcOff.mcOn.lineStyle(0, 0, 0);
this.mcOff.mcOn.mc.lineStyle(0, 0, 0);
this.mcOff.mcOn.beginFill(0xFFFFFF);
this.mcOff.mcOn.createRectangle(0, 0, 150, 75);
this.mcOff.mcOn.endFill();
matrix = new Matrix();
matrix.createGradientBox(150, 65, Math.PI/4, 75, 0);
this.mcOff.mcOn.mc.beginGradientFill("linear", [0xFFFFFF, 0xEAEAEA], [100, 100], [0, 255], matrix);
this.mcOff.mcOn.mc.createRectangle(0, 75, 150, 65);
this.mcOff.mcOn.mc.endFill();
this.mcOff.mcOn.mc.beginFill(0xD7D7D7);
this.mcOff.mcOn.mc.createRectangle(0, 140, 150, 10);
this.mcOff.mcOn.mc.endFill();
this.mcOff.mcOn.beginFill(0xCBCBCB);
this.mcOff.mcOn.moveTo(150, 75);
this.mcOff.mcOn.lineTo(150, 150);
this.mcOff.mcOn.lineTo(160, 145);
this.mcOff.mcOn.lineTo(150, 75);
this.mcOff.mcOn.endFill();
////
this.mcOff.createEmptyMovieClip("mcOff", 3);
this.mcOff.mcOff.createEmptyMovieClip("mc", 3);
this.mcOff.mcOff._visible = false;
this.mcOff.mcOff._x = this.mcOff.mcOff._y=50;
this.mcOff.mcOff.mc.lineStyle(0, 0, 0);
this.mcOff.mcOff.lineStyle(0, 0, 0);
this.mcOff.mcOff.beginFill(0xCBCBCB, 40);
this.mcOff.mcOff.moveTo(150, 0);
this.mcOff.mcOff.lineTo(150, 75);
this.mcOff.mcOff.lineTo(160, 15);
this.mcOff.mcOff.lineTo(150, 0);
this.mcOff.mcOff.endFill();
this.mcOff.mcOff.mc.beginFill(0xE2E2E2);
this.mcOff.mcOff.mc.createRectangle(0, 0, 150, 10);
this.mcOff.mcOff.mc.endFill();
matrix = new Matrix();
matrix.createGradientBox(150, 65, Math.PI/4, 75, 0);
this.mcOff.mcOff.mc.beginFill(0xFF0000);
this.mcOff.mcOff.mc.beginGradientFill("linear", [0xFFFFFF, 0xEAEAEA], [100, 100], [0, 255], matrix);
this.mcOff.mcOff.mc.createRectangle(0, 10, 150, 65);
this.mcOff.mcOff.mc.endFill();
this.mcOff.mcOff.beginFill(0xFFFFFF);
this.mcOff.mcOff.createRectangle(0, 75, 150, 75);
this.mcOff.mcOff.endFill();
////
this.mcOff.mcOff.mc.onPress = function() {
this._parent._visible = false;
this._parent._parent.mcOn._visible = true;
this._parent._parent._parent.mcOn._visible = false;
};
this.mcOff.mcOn.mc.onPress = function() {
this._parent._visible = false;
this._parent._parent.mcOff._visible = true;
this._parent._parent._parent.mcOn._visible = true;
};
//
//
import flash.filters.DropShadowFilter;
import flash.filters.BevelFilter;
import flash.filters.BlurFilter;
f = [];
f.push(new DropShadowFilter(0, 0, 0x000000, .8, 5, 5, 1, 3, false, false, false));
f.push(new BevelFilter(5, 45, 0xFFFFFF, .8, 0xDCDCDC, .8, 5, 5, 5, 3, "inner", false));
var filterArray:Array = new Array();
this.mcOff.filters = f;
this.mcOff.mcRamka.filters = [new DropShadowFilter(0, 0, 0x000000, .5, 5, 5, 2, 3, false, false, false)];
this.mcOff.mcOn.filters = this.mcOff.mcOff.filters=[new BlurFilter(5, 5, 3)];
Перебор с блюром и теперь не видно что выключатель переключается.
Вот еще больше реализма (к моей версии), теперь есть небольшая задержка на переключение за счет хода тублера.
import flash.geom.*;
MovieClip.prototype.createRectangle = function (x, y, width, height, radius) {
if (radius != undefined or radius > 1) {
var r = radius;
} else {
var r = 0;
}
this.moveTo (x + r, y + 0);
this.lineTo (x + width - r, y + 0);
if (r) {
this.curveTo (x + width, y, x + width, y + r);
}
this.lineTo (x + width, y + height - r);
if (r) {
this.curveTo (x + width, y + height, x + width - r, y + height);
}
this.lineTo (x + r, y + height);
if (r) {
this.curveTo (x, y + height, x, y + height - r);
}
this.lineTo (x, y + r);
if (r) {
this.curveTo (x, y, x + r, y);
}
};
////
Stage.align = "LT";
Stage.scaleMode = "noScale";
Stage.addListener (this);
this.onResize = function () {
this.mcOff._x = (Stage.width - this.mcOff._width) / 2;
this.mcOff._y = (Stage.height - this.mcOff._height) / 2;
this.mcOn._width = Stage.width - 1;
this.mcOn._height = Stage.height - 1;
};
this.createEmptyMovieClip ("mcOn", 1);
this.mcOn.lineStyle (0, 0, 0);
this.mcOn.beginFill (0x113486, 80);
this.mcOn.createRectangle (0, 0, 150, 150);
this.mcOn.endFill ();
this.mcOn._visible = false;
this.mcOn.blendMode = "multiply";
////
this.createEmptyMovieClip ("mcOff", 0);
this.mcOff.lineStyle (0, 0xCCCCCC, 100, true);
matrix = new Matrix ();
matrix.createGradientBox (250, 250, Math.PI / 4, 0, 0);
this.mcOff.beginGradientFill ("linear", [0xFFFFFF, 0xEAEAEA], [100, 100], [0, 255], matrix);
this.mcOff.createRectangle (0, 0, 250, 250, 10);
this.mcOff.endFill ();
////
this.mcOff.createEmptyMovieClip ("mcRamka", 5);
this.mcOff.mcRamka._x = this.mcOff.mcRamka._y = 50;
this.mcOff.mcRamka.lineStyle (0, 0x888888);
this.mcOff.mcRamka.createRectangle (0, 0, 150, 150);
////
this.mcOff.createEmptyMovieClip ("mcOn", 4);
this.mcOff.mcOn.createEmptyMovieClip ("mc", 0);
this.mcOff.mcOn._x = this.mcOff.mcOn._y = 50;
this.mcOff.mcOn.lineStyle (0, 0, 0);
this.mcOff.mcOn.mc.lineStyle (0, 0, 0);
this.mcOff.mcOn.beginFill (0xFFFFFF);
this.mcOff.mcOn.createRectangle (0, 0, 150, 75);
this.mcOff.mcOn.endFill ();
matrix = new Matrix ();
matrix.createGradientBox (150, 65, Math.PI / 4, 75, 0);
this.mcOff.mcOn.mc.beginGradientFill ("linear", [0xFFFFFF, 0xEAEAEA], [100, 100], [0, 255], matrix);
this.mcOff.mcOn.mc.createRectangle (0, 75, 150, 65);
this.mcOff.mcOn.mc.endFill ();
this.mcOff.mcOn.mc.beginFill (0xD7D7D7);
this.mcOff.mcOn.mc.createRectangle (0, 140, 150, 10);
this.mcOff.mcOn.mc.endFill ();
this.mcOff.mcOn.beginFill (0xCBCBCB);
this.mcOff.mcOn.moveTo (150, 75);
this.mcOff.mcOn.lineTo (150, 150);
this.mcOff.mcOn.lineTo (160, 145);
this.mcOff.mcOn.lineTo (150, 75);
this.mcOff.mcOn.endFill ();
////
this.mcOff.createEmptyMovieClip ("mcOff", 3);
this.mcOff.mcOff.createEmptyMovieClip ("mc", 3);
this.mcOff.mcOff._visible = false;
this.mcOff.mcOff._x = this.mcOff.mcOff._y = 50;
this.mcOff.mcOff.mc.lineStyle (0, 0, 0);
this.mcOff.mcOff.lineStyle (0, 0, 0);
this.mcOff.mcOff.beginFill (0xCBCBCB, 40);
this.mcOff.mcOff.moveTo (150, 0);
this.mcOff.mcOff.lineTo (150, 75);
this.mcOff.mcOff.lineTo (160, 15);
this.mcOff.mcOff.lineTo (150, 0);
this.mcOff.mcOff.endFill ();
this.mcOff.mcOff.mc.beginFill (0xE2E2E2);
this.mcOff.mcOff.mc.createRectangle (0, 0, 150, 10);
this.mcOff.mcOff.mc.endFill ();
matrix = new Matrix ();
matrix.createGradientBox (150, 65, Math.PI / 4, 75, 0);
this.mcOff.mcOff.mc.beginFill (0xFF0000);
this.mcOff.mcOff.mc.beginGradientFill ("linear", [0xFFFFFF, 0xEAEAEA], [100, 100], [0, 255], matrix);
this.mcOff.mcOff.mc.createRectangle (0, 10, 150, 65);
this.mcOff.mcOff.mc.endFill ();
this.mcOff.mcOff.beginFill (0xFFFFFF);
this.mcOff.mcOff.createRectangle (0, 75, 150, 75);
this.mcOff.mcOff.endFill ();
////
this.mcOff.mcOff.mc.onPress = function () {
_global.idInterval = setInterval (this, "changeOff", 150);
};
this.mcOff.mcOn.mc.onPress = function () {
_global.idInterval = setInterval (this, "changeOn", 150);
};
this.mcOff.mcOff.mc.changeOff = function () {
this._parent._visible = false;
this._parent._parent.mcOn._visible = true;
this._parent._parent._parent.mcOn._visible = false;
clearInterval (idInterval);
};
this.mcOff.mcOn.mc.changeOn = function () {
this._parent._visible = false;
this._parent._parent.mcOff._visible = true;
this._parent._parent._parent.mcOn._visible = true;
clearInterval (idInterval);
};
Добавим дешёвые обои :D
import flash.geom.*;
MovieClip.prototype.createRectangle = function(x, y, width, height, radius) {
if (radius != undefined or radius>1) {
var r = radius;
} else {
var r = 0;
}
this.moveTo(x+r, y+0);
this.lineTo(x+width-r, y+0);
if (r) {
this.curveTo(x+width, y, x+width, y+r);
}
this.lineTo(x+width, y+height-r);
if (r) {
this.curveTo(x+width, y+height, x+width-r, y+height);
}
this.lineTo(x+r, y+height);
if (r) {
this.curveTo(x, y+height, x, y+height-r);
}
this.lineTo(x, y+r);
if (r) {
this.curveTo(x, y, x+r, y);
}
};
////
Stage.align = "LT";
Stage.scaleMode = "noScale";
Stage.addListener(this);
this.onResize = function() {
this.mcOff._x = (Stage.width-this.mcOff._width)/2;
this.mcOff._y = (Stage.height-this.mcOff._height)/2;
this.mcOn._width = Stage.width-1;
this.mcOn._height = Stage.height-1;
//
this.createEmptyMovieClip("gradient_mc", -1);
with (gradient_mc) {
var fillType:String = "linear";
var colors:Array = [0xEED9BB, 0x74511D];
var alphas:Array = [100, 100];
var ratios:Array = [230, 231];
var matrix:Matrix = new Matrix();
matrix.createGradientBox(20, 1, 0, 0, 0);
var spreadMethod:String = "repeat";
beginGradientFill(fillType, colors, alphas, ratios, matrix, spreadMethod, 0.75);
moveTo(0, 0);
lineTo(0, Stage.height);
lineTo(Stage.width, Stage.height);
lineTo(Stage.width, 0);
lineTo(0, 0);
endFill();
}
};
this.createEmptyMovieClip("mcOn", 1);
this.mcOn.lineStyle(0, 0, 0);
this.mcOn.beginFill(0x113486, 80);
this.mcOn.createRectangle(0, 0, 150, 150);
this.mcOn.endFill();
this.mcOn._visible = false;
this.mcOn.blendMode = "multiply";
////
this.createEmptyMovieClip("mcOff", 0);
this.mcOff.lineStyle(0, 0xCCCCCC, 100, true);
matrix = new Matrix();
matrix.createGradientBox(250, 250, Math.PI/4, 0, 0);
this.mcOff.beginGradientFill("linear", [0xFFFFFF, 0xEAEAEA], [100, 100], [0, 255], matrix);
this.mcOff.createRectangle(0, 0, 250, 250, 10);
this.mcOff.endFill();
////
this.mcOff.createEmptyMovieClip("mcRamka", 5);
this.mcOff.mcRamka._x = this.mcOff.mcRamka._y=50;
this.mcOff.mcRamka.lineStyle(0, 0x999999);
this.mcOff.mcRamka.createRectangle(0, 0, 150, 150);
////
this.mcOff.createEmptyMovieClip("mcOn", 4);
this.mcOff.mcOn.createEmptyMovieClip("mc", 0);
this.mcOff.mcOn._x = this.mcOff.mcOn._y=50;
this.mcOff.mcOn.lineStyle(0, 0, 0);
this.mcOff.mcOn.mc.lineStyle(0, 0, 0);
this.mcOff.mcOn.beginFill(0xFFFFFF);
this.mcOff.mcOn.createRectangle(0, 0, 150, 75);
this.mcOff.mcOn.endFill();
matrix = new Matrix();
matrix.createGradientBox(150, 65, Math.PI/4, 75, 0);
this.mcOff.mcOn.mc.beginGradientFill("linear", [0xFFFFFF, 0xEAEAEA], [100, 100], [0, 255], matrix);
this.mcOff.mcOn.mc.createRectangle(0, 75, 150, 65);
this.mcOff.mcOn.mc.endFill();
this.mcOff.mcOn.mc.beginFill(0xD7D7D7);
this.mcOff.mcOn.mc.createRectangle(0, 140, 150, 10);
this.mcOff.mcOn.mc.endFill();
this.mcOff.mcOn.beginFill(0xCBCBCB);
this.mcOff.mcOn.moveTo(150, 75);
this.mcOff.mcOn.lineTo(150, 150);
this.mcOff.mcOn.lineTo(160, 145);
this.mcOff.mcOn.lineTo(150, 75);
this.mcOff.mcOn.endFill();
////
this.mcOff.createEmptyMovieClip("mcOff", 3);
this.mcOff.mcOff.createEmptyMovieClip("mc", 3);
this.mcOff.mcOff._visible = false;
this.mcOff.mcOff._x = this.mcOff.mcOff._y=50;
this.mcOff.mcOff.mc.lineStyle(0, 0, 0);
this.mcOff.mcOff.lineStyle(0, 0, 0);
this.mcOff.mcOff.beginFill(0xCBCBCB, 40);
this.mcOff.mcOff.moveTo(150, 0);
this.mcOff.mcOff.lineTo(150, 75);
this.mcOff.mcOff.lineTo(160, 15);
this.mcOff.mcOff.lineTo(150, 0);
this.mcOff.mcOff.endFill();
this.mcOff.mcOff.mc.beginFill(0xE2E2E2);
this.mcOff.mcOff.mc.createRectangle(0, 0, 150, 10);
this.mcOff.mcOff.mc.endFill();
matrix = new Matrix();
matrix.createGradientBox(150, 65, Math.PI/4, 75, 0);
this.mcOff.mcOff.mc.beginFill(0xFF0000);
this.mcOff.mcOff.mc.beginGradientFill("linear", [0xFFFFFF, 0xEAEAEA], [100, 100], [0, 255], matrix);
this.mcOff.mcOff.mc.createRectangle(0, 10, 150, 65);
this.mcOff.mcOff.mc.endFill();
this.mcOff.mcOff.beginFill(0xFFFFFF);
this.mcOff.mcOff.createRectangle(0, 75, 150, 75);
this.mcOff.mcOff.endFill();
////
this.mcOff.mcOff.mc.onPress = function() {
this._parent._visible = false;
this._parent._parent.mcOn._visible = true;
this._parent._parent._parent.mcOn._visible = false;
};
this.mcOff.mcOn.mc.onPress = function() {
this._parent._visible = false;
this._parent._parent.mcOff._visible = true;
this._parent._parent._parent.mcOn._visible = true;
};
//
//
import flash.filters.DropShadowFilter;
import flash.filters.BevelFilter;
import flash.filters.BlurFilter;
f = [];
f.push(new BevelFilter(5, 45, 0xFFFFFF, .8, 0xDCDCDC, .8, 5, 5, 5, 3, "inner", false));
f.push(new BevelFilter(1, 235, 0x333333, 1, 0x333333, 1, 5, 5, 2, 3, "outer", false));
var filterArray:Array = new Array();
this.mcOff.filters = f;
this.mcOff.mcRamka.filters = [new DropShadowFilter(0, 0, 0x000000, .5, 5, 5, 2, 3, false, false, false)];
this.mcOff.mcOn.filters = this.mcOff.mcOff.filters=[new BlurFilter(2, 2, 3)];
Давай уж квартиру дорисуем и переедем туда )))
А ещё лучше будем сдавать местным нубам )))
И так =) Ultimate Orange CheckBox Trigger And Radio Button Framework =)
Составляющие части
класс CheckBoxController
import com.onorange.lab.ui.ICheckBox;
import mx.utils.Delegate;
class com.onorange.lab.ui.CheckBoxController {
public static var ON:String = "on";
public static var OFF:String = "off";
//
private var target:ICheckBox;
private var isOn:Boolean;
private var currentState:String;
public function CheckBoxController(target:ICheckBox,defaultValue:Boolean) {
isOn = (defaultValue == undefined) ? false : true;
this.target = target;
target.addEventListener("click",Delegate.create(this,changeState));
}
public function set state(val:String):Void {
if(val == ON || val == OFF) {
if(val == ON) {
target.setOn();
}else if(val == OFF) {
target.setOff();
}
currentState = val;
}
}
public function get state():String {
return currentState;
}
private function changeState(evt:Object):Void {
state = (currentState == ON)? OFF:ON;
}
}
Занимается управлением тригера.
Два абстрактных класса
AbstractCheckBoxMovieClip и AbstractCheckBox являються базовыми классами для чекбоксов(первый если экстендим мувиклип, второй если обжект)
import mx.events.EventDispatcher;
import com.onorange.lib.events.IEventDispatcher;
class com.onorange.lab.ui.AbstractCheckBoxMovieClip
extends MovieClip
implements IEventDispatcher{
public function AbstractCheckBoxMovieClip () {
EventDispatcher.initialize(this);
onRelease = dispatchClick;
}
public function addEventListener(type:String,target:Object):Void {
}
public function removeEventListener(type:String,target:Object):Void {
}
public function dispatchEvent(eventObject:Object):Void{
}
private function dispatchClick():Void {
dispatchEvent({type:'click',target:this});
}
}
import mx.events.EventDispatcher;
import com.onorange.lib.events.IEventDispatcher;
class com.onorange.lab.ui.AbstractCheckBox
implements IEventDispatcher {
private var container:MovieClip;
public function AbstractCheckBox (parent:MovieClip) {
EventDispatcher.initialize(this);
container = parent.createEmptyMovieClip("container_mc",parent.getNextHighestDepth());
container.onRelease = dispatchClick;
}
public function addEventListener(type:String,target:Object):Void {
}
public function removeEventListener(type:String,target:Object):Void {
}
public function dispatchEvent(eventObject:Object):Void {
}
private function dispatchClick():Void {
dispatchEvent({type:'click',target:this});
}
}
Интерфейс ICheckBox все наши тригеры должны реализовывать его
import com.onorange.lib.events.IEventDispatcher;
interface com.onorange.lab.ui.ICheckBox extends com.onorange.lib.events.IEventDispatcher{
function setOn():Void;
function setOff():Void;
}
делать навороченные примеры влом, вот два простейших примера14193
Я думаю понятно что можно вставить все что угодно
PS я забыл в CheckBoxController вставить EventDispatcher, как нить потом=) щас уже влом
Давай уж квартиру дорисуем и переедем туда )))
А ещё лучше будем сдавать местным нубам )))
Не отмазывайся, давай приз :) Надпись какую нибудь типа "Winner on/off" под ником :)
У меня нет прав лепить такое ))) Блин придётся с администрацией договариваться ;)
Работает на vBulletin ® версия 3.7.3. Copyright ©2000-2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Copyright © 1999-2008 Flasher.ru. All rights reserved.