Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Flash > Копирование


Автор: Neznayka 25.8.2005, 19:58
Суть вот в чем, есть исходникфлаш ролика, его надо немного изменить.
Вот сам ролик. http://tsm-proekt.ru/1.fla

Надо сделать не 1 полоску, а 3 причем независимых (они будут разного цвета)
я во флеше не силён поэтому прошу помощи.
Проблема не сложная, просто я незнаю как копировать, так что б была именно полоска а не 1 квадритик.



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



я так понимаю вся проблема в скрипте
for (i = 0; i < 23; i++)
{
newname = "sq" + i + "_" + j;
duplicateMovieClip(_root.sq_t, newname, i);
_root[newname]._x = _root[newname]._x + i * 18;
} // end of for

он относится к точному объекту но как изменить незнаю.


Если кто знает как объясните пожалуйсто.

Автор: flashgc 26.8.2005, 00:15
первое, что пришло мне в голову - исользовать функции
Что-то типа этого:
Код

CreateLine = function (x, y, id, depth) {
    for (i=0; i<23; i++) {
        newname = "sq"+i+"_"+j+id;
        duplicateMovieClip(_root.sq_t, newname, i+depth);
        _root[newname]._x = x+i*18;
        _root[newname]._y = y;
    }
    // end of for
};
CreateLine(1, 1, "line", 1);
CreateLine(1, 19, "line2", 90);
CreateLine(1, 37, "line3", 900);


Конечно, можно и иначе, только вот уже бошка не варит ночью - никак не соображу... smile

Автор: AlDev 26.8.2005, 07:31
1. в библиотеке в коде Symbol 2:
Код

xm = _root._xmouse;
ym = _root._ymouse;

меняешь на:
Код

xm = this._parent._xmouse;
ym = this._parent._ymouse;


2. Щёлкаешь правой кнопкой но Symbol 2 в библиотеке и выставляешь в linkage idetifities равный item.

3. Сносим нахер код с первого кадра сцены и пишем:
Код

function showLine(target_mc:MovieClip):Void
{
    var new_name:String;
    for (var i:Number = 0; i < 23; i++)
    {
        new_name = "sq_" + i.toString();
        target_mc.attachMovie('item',new_name,target_mc.getNextHighestDepth());
        target_mc[new_name]._x = target_mc[new_name]._x + i*18;
    } 
}
var lines:Array = new Array();
lines.push(_root.createEmptyMovieClip('line_instance_1',this.getNextHighestDepth()));
lines.push(_root.createEmptyMovieClip('line_instance_2',this.getNextHighestDepth()));
lines.push(_root.createEmptyMovieClip('line_instance_3',this.getNextHighestDepth()));
for (var i:Number=0;i<lines.length;i++)
{
    trace (lines[i]);
    lines[i]._y = i*80;
    showLine(lines[i]);
}
stop();


PS: код для AS2.

Автор: Guest 26.8.2005, 11:14
Можно ли второй пункт по подробнее?
Библеотеку я нашел, правой кнопкой щелкнул, там вылезает менюшка но linkage idetifities пункта там нету, у меня русский перевод.

Межешь хоть приблизительно сказать как это должно быть в переводе?



И пункт 3.
Этот скрипт надо в акшен слое вставлять?
вместо
for (i = 0; i < 23; i++)
{
newname = "sq" + i + "_" + j;
duplicateMovieClip(_root.sq_t, newname, i);
_root[newname]._x = _root[newname]._x + i * 18;
} // end of for

?

Автор: AlDev 26.8.2005, 11:26
смысл - это итендификатор для ActionScript... или привязка или чё-ндь такое....

Цитата(Guest @ 26.8.2005, 16:14)

И пункт 3.
Этот скрипт надо в акшен слое вставлять?

да. вместо того, что там написано...

Автор: Neznayka 26.8.2005, 12:06
Не это окошко?
http://tsm-proekt.ru/screen.JPG

Автор: AlDev 26.8.2005, 12:18
это. Вместо Symbol 2 выстави item

Автор: Neznayka 26.8.2005, 13:27
**Ошибка** Сцена =Scene 1, layer=Action Layer, frame=1:Line 1: '{' expected
function showLine(target_mc:MovieClip):Void

Total ActionScript Errors: 1 Reported Errors: 1

вот чо пишет

Автор: AlDev 26.8.2005, 13:44
я-ж написал, что это для 2004 Flash-а.
в mx убери все объявления типов.

Автор: Neznayka 26.8.2005, 14:32
А что есть объявление переменной?

Может я ошибаюсь а где ты писал что это для 2004 флеша.

На всякий случай.
У меня версия Flash MX 2004 Pro. 7.0

Автор: AntonioBanderaz 27.8.2005, 01:43
'{' expected - нехватает скобки, а объявления дествительно, для функций, мона опустить

сточка function showLine(target_mc:MovieClip):Void, здесь Void - тип функции, типо она ничего не возвращает...
function showLine(target_mc:MovieClip) - это без типа...

Автор: AlDev 28.8.2005, 14:43
Neznayka, создай новый документ во Flash, скопируй в него всё и попробуй запустить. Должно работать.
AntonioBanderaz, без типа будет так:
Код

function showLine(target_mc)


Цитата(AntonioBanderaz @ 27.8.2005, 06:43)
'{' expected - нехватает скобки, а объявления дествительно, для функций, мона опустить

?? это с чего??


PS: такой баг всё время всплывает, если юзать 6-й Flash или работать с Flash MX проектом.

Автор: AntonioBanderaz 28.8.2005, 16:35
Без типа функции, про аргументы я ничего не говорил.... Ну ладно ступил чутка на счёт скобки.... =)

Автор: Neznayka 29.8.2005, 15:54
http://tsm-proekt.ru/2.fla
Вот что получилось
Ошибку выдавать перестал, но того что я хотел так и не получилось.


Или я опять что то не так сделал!

Автор: Neznayka 29.8.2005, 16:15
__________
__________
__________
Надо что то типа того тока поближе друг к другу

Автор: AlDev 29.8.2005, 16:31
лови

Автор: Neznayka 29.8.2005, 19:07
Спасибо

Вот чо то пишет!



_level0.line_instance_1
_level0.line_instance_2
_level0.line_instance_3


и как теперь цвета поменять каждого ?

Автор: AlDev 30.8.2005, 16:01
ну сделай через Color
Код

var clr:Color = new Color(this['line_instance_2']);
clr.setRGB(0xFF0000)

и в том-же духе. Это запихай к определению линий после всего.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)