PDA

Просмотр полной версии : класс от MovieClip. посмотрите, пож-та..


mr.zed
16.01.2007, 20:15
Суть: картинки в бибилиотеке (цветочки). Надо их множить на экране. Для этого создал класс picFlower чтобы потом создавать переменные pic01, pic02, pic03 и т.д. и что бы иметь возможность ими управлять. Но на экране пусто. При отладке шаг "1" проходит, а "2" нет.

есть класс picFlower.as:

import flash.display.BitmapData;
class picFlower extends MovieClip {
var pic01:MovieClip;
var pic02:MovieClip;
function picFlower(mc,x1,y1){
trace(1);
createEmptyMovieClip(mc,0);
mc._x=x1; mc._y=y1;
pic01=mc.createEmptyMovieClip("pic01",0);
pic01.attachBitmap(BitmapData.loadBitmap("Fl0201",0),0);
pic02=mc.createEmptyMovieClip("pic02",2);
pic02.attachBitmap(BitmapData.loadBitmap("Fl0202",0),0);
pic01._y=-64; pic02._y=-11;
}
function onEnterFrame (){
trace(2);
if(_Xscale<100){
this._rotation++; this._Xscale++; this._Yscale++;
}
}
}

во флеше пишу: (наверное неправильно, но пробовал по-разному)

var pic02=new picFlower(pic02,150,150);
var pic03=new picFlower(pic03,300,300);


Заранее спасибо.

etc
16.01.2007, 20:20
Имена классов должны начинатся с прописной буквы.
Твой класс не является наследником MovieClip (мувикливы не создаются через конструктор), так что объявление extends MovieClip лишнее.
Нужно использовать attachMovie и параметры клипа передавать четвертым аргументом. Тогда использование extends MovieClip оправдано.

mr.zed
16.01.2007, 21:35
Нужно использовать attachMovie и параметры клипа передавать четвертым аргументом. Тогда использование extends MovieClip оправдано.
так понимаю, что в если использовать class PicFlower extends MovieClip, то уже создается клип, к которому нужно аттачить битмапы? Я пометил красным, где не могу разобраться. Подскажите. сам уже киплю просто.

import flash.display.BitmapData;
class PicFlower extends MovieClip {
var pic01:MovieClip;
var pic02:MovieClip;
function PicFlower(x1,y1){
trace(x1+" "+y1);
this._x=x1; this._y=y1;

??????attachMovie("mc","pic01",0);
pic01.attachBitmap(BitmapData.loadBitmap("Fl0201",0),0);
}
}

Наворотил дров.......

etc
17.01.2007, 00:04
Нет, в библитеке должен быть пустой мувик с идентификатором и назначенным классом PicFlower.

В руте (допустим), пишешь:

import PicFlower;
var pic:PicFlower = PicFlower(this.attachMovie("picFlowerId","pic0",0,{x1:10,x1:30}));
Класс PicFlower при этом должен выглядеть примерно так:

import flash.display.BitmapData;
class PicFlower extends MovieClip {
private var pic01:MovieClip;
private var pic02:MovieClip;
private var x1:Number;
private var y1:Number;
private function PicFlower() {
super();
this._x = this.x1;
this._y = this.y1;

this.pic01 = this.attachMovie("mc","pic01",0);
this.pic01.attachBitmap(BitmapData.loadBitmap("Fl0201",0),0);
}
}

mr.zed
17.01.2007, 10:31
СПАСИБО!!!!

Nirth
17.01.2007, 10:40
или создаем через __proto__

вот например - http://orangeflash.eu/?p=10

etc
17.01.2007, 11:14
У меня этим же занимается McFactory, но __proto__ не есть правильная вещь, если применяется не сознательно.

mr.zed, я там super ещё добавил.

Kikasso
17.01.2007, 16:26
import PicFlower;
var pic:PicFlower = PicFlower(this.attachMovie("picFlowerId","pic0",0,{x1:10,x1:30}));
Это точно? а не так?

import PicFlower;
var pic:PicFlower = this.attachMovie("picFlowerId","pic0",0,{x1:10,x1:30});
Может я что-то не понимаю..

etc
17.01.2007, 16:33
Именно так. Нужно сказать компилятору, что имеем дело с PicFlower, а не с MovieClip.