praegune kellaaeg 18.06.2025 11:32:18
|
Hinnavaatlus
:: Foorum
:: Uudised
:: Ärifoorumid
:: HV F1 ennustusvõistlus
:: Pangalink
:: Telekavad
:: HV toote otsing
|
|
autor |
|
raitl
HV veteran

liitunud: 20.01.2002
|
26.10.2010 10:23:23
FLASH + XML + PHP |
|
|
Vaja Magento poele juurde pookida 3D Carousel rotator flash xml bänneri süsteem.
Laadisin päises AC_RunActiveContent.js
Staatilisse blokki istutasin selle:
<script language="javascript">
if (AC_FL_RunContent == 0) {
alert("This page requires AC_RunActiveContent.js.");
} else {
AC_FL_RunContent(
'codebase', 'http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0',
'width', '600',
'height', '400',
'src', 'http://www.blahblah.com/banners/raamatud/3DRotateCarousel.swf',
'xmlFile', 'http://www.blahblah.com/banners/raamatud/config.xml',
'quality', 'high',
'pluginspage', 'http://www.macromedia.com/go/getflashplayer',
'align', 'middle',
'play', 'true',
'loop', 'true',
'scale', 'showall',
'wmode', 'window',
'devicefont', 'false',
'id', '3DRotateCarousel',
'bgcolor', '#171717',
'name', '3DRotateCarousel',
'menu', 'false',
'allowFullScreen', 'false',
'allowScriptAccess','sameDomain',
'movie', 'http://www.blahblah.com/banners/raamatud/3DRotateCarousel',
'salign', ''
); //end AC code
}
</script> <noscript>
<object classid="clsid:d27cdb6e-ae6d-11cf-96b8-444553540000" codebase="http://download.macromedia.com/pub/shockwave/cabs/flash/swflash.cab#version=8,0,0,0" width="600" height="400" id="3DRotateCarousel" align="middle">
<param name="allowScriptAccess" value="sameDomain" />
<param name="allowFullScreen" value="false" />
<param name="movie" value="http://www.blahblah.com/banners/raamatud/3DRotateCarousel.swf" />
<param name="menu" value="false" />
<param name="quality" value="high" />
<param name="bgcolor" value="#171717" />
<embed src="3DRotateCarousel.swf" menu="false" quality="high" bgcolor="#171717" width="600" height="400" name="3DRotateCarousel" align="middle" allowScriptAccess="sameDomain" allowFullScreen="false" type="application/x-shockwave-flash" pluginspage="http://www.macromedia.com/go/getflashplayer" />
</object>
</noscript> |
xml failis kasutasin piltidele samuti täispikkasid URL'e
Tulemuseks see, et flash küll laetakse, funktsiooninupud jms on olemas, kuid mitte üht pilti ei laeta. Selline tunne, nagu ta ei saaks xml faili otsa kätte.
Ideed juba suhteliselt otsas, igasugune abi oleks teretulnud.
|
|
Kommentaarid: 166 loe/lisa |
Kasutajad arvavad: |
   |
:: |
1 :: |
0 :: |
147 |
|
tagasi üles |
|
 |
hybrid
HV vaatleja
liitunud: 15.10.2004
|
26.10.2010 12:41:53
|
|
|
All noscripti osas pole xml faili määratud, samuti ma pole kindel, aga xml fail tuleb ette anda äkki ainult kausta kujul, mitte full url.
|
|
Kommentaarid: 16 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
16 |
|
tagasi üles |
|
 |
raitl
HV veteran

liitunud: 20.01.2002
|
26.10.2010 14:14:23
|
|
|
olen üritanud xml'i kätte anda nii relative kui full pathiga. Tulemus ühtmoodi ümmargune null.
EDIT: Ei saa ju ka see mõjutada, et URL, kus bänner näha peaks olema on http://www.blabla.com/index.php/books.html
EDIT2: Tegin väikse testi. lokaalses html failis täpsustasin samamoodi xml faili asukohaks serveris asuva xml faili. - Selgub, et minu kasutatud variant "xmlFile" ei toimi. Ehk siis seda eiratakse südamerahuga. Kas keegi flashVars asjatundja oskaks mind õige lahenduse jälgedele juhatada?
ActionScript on alljärgnev. Proovisin muuta xmlData variablet, asendades ta sellega: var xmlData = xmlConfFile;
ja siis lehe koodi lisasin 'FlashVars', 'myFile=http://www.blahblah.com/banners/raamatud/config.xml',
tulemuseks oli see, et ei enam ei laetud kohalikku xml faili, kuid ei laetud ka veebis asuvat.
import flash.geom.ColorTransform; //for rollOver/rollOut color intensity effect
import flash.geom.Transform;
// OPTIONAL STAGE RESIZE HANDLER - THE CONTENT WILL BE ALWAYS CENTERED //
Stage.align = "TL";
Stage.scaleMode = "noScale";
fscommand("fullsceen",true);
var myListener:Object = new Object();
myListener.onResize = function () {
sc.screenCenterX = Stage.width/2;
sc.screenCenterY = Stage.height/2;
}
Stage.addListener(myListener);
// MAIN PARAMETERS //
var radius = 200; // the radius
var carouselCenterX = -50; //the center point of the carousel in the scene
var carouselCenterY = 0;
var carouselCenterZ = 1250; //(the total perspective depth is 1500 in this example)
//select the 3D Scene component on the stage / Components Inspector to adjust various parameters
var xmlData = "config.xml";
var useBitmapSmoothing = 1; // 0/1 -> use or not bitmap smoothing
var rotspeedmax = 10; //max angle rotations speed used in rotation calculation
var tweendecay = .1; //tween parameters
var tweentoleration = .2;
var useBitmapSmoothing = 1; // 0/1 -> use or not bitmap smoothing
// the following parameters can be used if you have images of variable size (useFixedImageSize = 0)
var alignImagesToBottom = 0; // 0 - default image allignment from top to bottom
// 1 - images alignment will be from bottom to top
var maxImageHeight = 250; // if alignImagesToBottom = 1 then you need to specify a max image height value
// for the images to be properly aligned from bottom to top
//MIRROR PARAMS
var useMirror = 1; // can be 0 or 1
var mirrorHeightGaign = 0.3; //percentage value between 0 and 1 to increase/decrease the mirror height
// 0 - no mirror
var mirrorOffset = 0; //the offset distance between image and mirror
//onRollOver / onRollOut color intensity
var useRollOverColoring = 1; // 1 - use coloring, 0 - don't use coloring
var rollOverColor = 25; //images onRollOver color intensity
var rollOutColor = -25; //images onRollOut color intensity
var coloringSpeed = 5; //RollOver / RollOut color speed
var maxC = rollOverColor + Math.abs(rollOutColor);
//show titles
var showTitle = 0; //can be 0 or 1
var titleYOffset = 0;
var titleXOffset = 0;
//logo parameters
var logoImage="";
var logoURL="";
var logoXOffset = 0;
var logoYOffset = 0;
var useLogoMirror=1;
var logoMirrorHeightGaign=0.6;
var logoMirrorOffset=0;
var logoRollOverColoring=1;
var useLogoBitmapSmoothing=1;
// YOU CAN ALSO USE THE adjustCamera();
// METHOD (INSTEAD PARAMETERS OR COMBINE BOTH) INCLUDED IN THE // METHODS AREA
// TO FIT YOUR REQUIREMENTS
var useAdjustCamera = 1; //can be 0/1 - you also need to play with the angle values below
var camXAngle = 10;
var camYAngle = 0;
var camZAngle = 0; //not used
var camDx = 0; //specify the dx,dy and dz offset values
var camDy = 150;
var camDz = 0;
//////////////////////////////// END MAIN PARAMS /////////////////////////////
// AUXILIARY VARIABLES USED IN CALCULATION //
var xmlObj: XML;
var nodes = new Array();
var rotspeed = 0;
var rotdir = 1;
var pLeft;
var pRight;
// leave this value as is
var useFixedImageSize = 1;
// METHODS //
//if xml file is defined with FlashVars, overwrite the default xml file name
if (_root.xmlFile!=undefined) xmlData = unescape(_root.xmlFile);
//init(); //init call -> load config XML and create objects
function init() {
xmlObj = new XML(xmlData);
xmlObj.ignoreWhite = true;
xmlObj.load(xmlData);
this.onEnterFrame = checkXMLprogress;
}
function checkXMLprogress() {
var tmpBytesLoaded = xmlObj.getBytesLoaded();
var tmpBytesTotal = xmlObj.getBytesTotal();
if ((tmpBytesLoaded==tmpBytesTotal) && (tmpBytesTotal > 4)) {
delete this.onEnterFrame;
addObjects();
if (useAdjustCamera==1) adjustCamera(); //optionally you can adjust camera original position/rotation
startCarousel();
} //end if
}
function adjustCamera() {
// pivot or rotate (has the same effect unless you combine both type of rotation functions)
// then if you translate (move the camera) on y axis
// and you will achieve a classic carousel configuration (familiar for many users)
// from a camera perspective
//var easing = mx.transitions.easing.Elastic.easeOut; //optional specify an easing type and motion duration
//var duration = 0.1;
sc.currentCamRotate(camXAngle,camYAngle,camZAngle);//,easing,duration);
//sc.currentCamPivot(xAngle,yAngle,zAngle);//,easing,duration);
sc.currentCamRelocateBy(camDx,camDy,camDz);//,easing,duration);
// YOU CAN CHECK THE 3D SCENE API EXAMPLE AND THE BUILT IN HELP BOOK FOR MORE DETAILS //
// ABOUT SUPPORTED METHODS AND PROPERTIES //
}
function startCarousel() {
this.onEnterFrame = rotationHandler;
}
function addObjects() { //add objects in the scene
var configParamsNo = 33; //set this with the total param number excluding images
var j = 0;
var objects = xmlObj.firstChild.childNodes;
var angleStep = (2 * Math.PI) / (objects.length - configParamsNo);
//crete an empty object (without any graphics in this example - representing the center of the carousel)
//we will use objectRotateAround() method inside rotationHandler()
//to rotate objects around this center
//sc.createObject(carouselCenterX,carouselCenterY,carouselCenterZ,"none","none","center");
for(var i=0; i<objects.length; i++) {
//trace(objects[i].attributes.param+" "+objects[i].attributes.value);
if (objects[i].attributes.param != undefined) {
if (objects[i].attributes.param=="maxImageHeight") this.maxImageHeight = Number(objects[i].attributes.value);
if (objects[i].attributes.param=="logoImage") this.logoImage = objects[i].attributes.value;
if (objects[i].attributes.param=="logoURL") this.logoURL = objects[i].attributes.value;
if (objects[i].attributes.param=="logoXOffset") this.logoXOffset = Number(objects[i].attributes.value);
if (objects[i].attributes.param=="logoYOffset") this.logoYOffset = Number(objects[i].attributes.value);
if (objects[i].attributes.param=="useLogoMirror") this.useLogoMirror = Number(objects[i].attributes.value);
//if (objects[i].attributes.param=="logoMirrorHeightGaign") this.logoMirrorHeightGaign = Number(objects[i].attributes.value);
//if (objects[i].attributes.param=="logoMirrorOffset") this.logoMirrorOffset = Number(objects[i].attributes.value);
if (objects[i].attributes.param=="logoRollOverColoring") this.logoRollOverColoring = Number(objects[i].attributes.value);
if (objects[i].attributes.param=="useLogoBitmapSmoothing") this.useLogoBitmapSmoothing = Number(objects[i].attributes.value);
if (objects[i].attributes.param=="carouselCenterX") this.carouselCenterX = Number(objects[i].attributes.value);
if (objects[i].attributes.param=="carouselCenterY") this.carouselCenterY = Number(objects[i].attributes.value);
if (objects[i].attributes.param=="carouselCenterZ") {
this.carouselCenterZ = Number(objects[i].attributes.value);
if (logoImage!="") {
//trace("add logo");
sc.createObject(carouselCenterX,carouselCenterY,carouselCenterZ,"logoMc","library","center");
}else {
sc.createObject(carouselCenterX,carouselCenterY,carouselCenterZ,"none","none","center");
}
}
if (objects[i].attributes.param=="radius") this.radius = Number(objects[i].attributes.value);
if (objects[i].attributes.param=="tweenDecay") this.tweendecay = Number(objects[i].attributes.value);
if (objects[i].attributes.param=="tweenToleration") this.tweentoleration = Number(objects[i].attributes.value);
if (objects[i].attributes.param=="rotspeedmax") this.rotspeedmax = Number(objects[i].attributes.value);
if (objects[i].attributes.param=="useAdjustCamera") this.useAdjustCamera = Number(objects[i].attributes.value);
if (objects[i].attributes.param=="camXAngle") this.camXAngle = Number(objects[i].attributes.value);
if (objects[i].attributes.param=="camYAngle") this.camYAngle = Number(objects[i].attributes.value);
//if (objects[i].attributes.param=="camZAngle") this.camZAngle = Number(objects[i].attributes.value);
if (objects[i].attributes.param=="camDx") this.camDx = Number(objects[i].attributes.value);
if (objects[i].attributes.param=="camDy") this.camDy = Number(objects[i].attributes.value);
if (objects[i].attributes.param=="camDz") this.camDz = Number(objects[i].attributes.value);
if (objects[i].attributes.param=="useBitmapSmoothing") this.useBitmapSmoothing = Number(objects[i].attributes.value);
if (objects[i].attributes.param=="alignImagesToBottom") this.alignImagesToBottom = Number(objects[i].attributes.value);
if (objects[i].attributes.param=="maxImageHeight") this.maxImageHeight = Number(objects[i].attributes.value);
if (objects[i].attributes.param=="useMirror") this.useMirror = Number(objects[i].attributes.value);
if (objects[i].attributes.param=="mirrorHeightGaign") this.mirrorHeightGaign = Number(objects[i].attributes.value);
if (objects[i].attributes.param=="mirrorOffset") this.mirrorOffset = Number(objects[i].attributes.value);
if (objects[i].attributes.param=="showThumbTitle") this.showTitle = Number(objects[i].attributes.value);
if (objects[i].attributes.param=="titleXOffset") this.titleXOffset = Number(objects[i].attributes.value);
if (objects[i].attributes.param=="titleYOffset") this.titleYOffset = Number(objects[i].attributes.value);
if (objects[i].attributes.param=="useRollOverColoring") this.useRollOverColoring = Number(objects[i].attributes.value);
if (objects[i].attributes.param=="rollOverColorIntensity") this.rollOverColorIntensity = Number(objects[i].attributes.value);
if (objects[i].attributes.param=="rollOutColorIntensity") this.rollOutColorIntensity = Number(objects[i].attributes.value);
if (objects[i].attributes.param=="coloringSpeed") {
this.coloringSpeed = Number(objects[i].attributes.value);
maxC = rollOverColor + Math.abs(rollOutColor);
}
}
else {
//calculate objects positions on a circle
//based on the radius parameter and the carousel center point
//var x1 = carouselCenterX + radius * Math.cos (2 * Math.PI * i / objects.length);
//var y1 = carouselCenterY //+ 0; //the same y
//var z1 = carouselCenterZ + radius * Math.sin (2 * Math.PI * i / objects.length);
var x1 = carouselCenterX + Math.round(radius * Math.cos (j * angleStep));
var y1 = carouselCenterY; //the same y
var z1 = carouselCenterZ + Math.round(radius * Math.sin (j * angleStep));
var link = objects[i].attributes.source; //the image link in the xml file
if (useFixedImageSize==1) source1 = "imgMc"; //image mc linkage id from the library
else source1 = "imgMc_01";
var sourceType1 = "library";
var regName1 = "p"+j; //the registration name used in Flash
// trace(regName1+": "+x1+" "+y1+" "+z1);
sc.createObject(x1,y1,z1,source1,sourceType1,regName1); //sc is the 3DScene instance name, createObject is a method of 3DScene component
//this[regName1]["imgBox"].loadMovie(link); //load external image
this[regName1]["info"] = objects[i];//keep the XML node info
nodes[j] = this[regName1]; //add object to nodes array
//this[regName1].onPress = pressHandler;
//this[regName1].onRelease = this[regName1].onReleaseOutside = releaseHandler;
j++;
}
}//end for
}
function activateLogoHandlers(obj) {
obj.onPress = logoPressHandler;
obj.onRelease = obj.onReleaseOutside = logoReleaseHandler;
obj.onRollOver = logoRollOverHandler;
obj.onRollOut = logoRollOutHandler;
}
function logoPressHandler() {
//ADD CUSTOM CODE HERE WHEN THE LOGO IS PRESSED
}
function logoReleaseHandler() {
//ADD CUSTOM CODE HERE WHEN THE IMAGE IS RELEASED
//navigate to an url if url!=undefined
var setLink = ((logoURL!=undefined) && (logoURL!=""));
if (setLink) {
getURL(logoURL,"_blank");
}
}
function logoRollOverHandler() {
if (logoRollOverColoring) {
setColor(this);
}
}
function logoRollOutHandler() {
if (logoRollOverColoring) {
resetColor(this);
}
}
// END LOGO HANDLERS //
function activateHandlers(obj) {
obj.onPress = pressHandler;
obj.onRelease = obj.onReleaseOutside = releaseHandler;
obj.onRollOver = rollOverHandler;
obj.onRollOut = rollOutHandler;
}
function pressHandler() {
//ADD CUSTOM CODE HERE WHEN THE IMAGE IS PRESSED
}
function releaseHandler() {
//ADD CUSTOM CODE HERE WHEN THE IMAGE IS RELEASED
brelease();
//open url
openURL(this);
if (useRollOverColoring) {
resetColor(this);
}
}
// rollOver/rollOut handlers
function setColor(obj) {
var trans:Transform = new Transform(obj);
var colorTrans:ColorTransform = new ColorTransform();
//colorTrans.blueOffset = colorTrans.greenOffset = colorTrans.redOffset=colorTrans.alphaOffset=0;
colorTrans.blueOffset = colorTrans.greenOffset = colorTrans.redOffset=0;
obj.onEnterFrame = function () {
if (colorTrans.blueOffset < maxC) {
// colorTrans.blueOffset = colorTrans.greenOffset = colorTrans.redOffset=colorTrans.alphaOffset+=coloringSpeed;
colorTrans.blueOffset = colorTrans.greenOffset = colorTrans.redOffset+=coloringSpeed;
trans.colorTransform = colorTrans;
}
else {delete obj.onEnterFrame;}
}
}
function resetColor(obj) {
var trans:Transform = new Transform(obj);
var colorTrans:ColorTransform = new ColorTransform();
//colorTrans.blueOffset = colorTrans.greenOffset = colorTrans.redOffset=colorTrans.alphaOffset= maxC;
colorTrans.blueOffset = colorTrans.greenOffset = colorTrans.redOffset= maxC;
obj.onEnterFrame = function () {
if (colorTrans.blueOffset > 0) {
//colorTrans.blueOffset = colorTrans.greenOffset = colorTrans.redOffset=colorTrans.alphaOffset -= coloringSpeed;
colorTrans.blueOffset = colorTrans.greenOffset = colorTrans.redOffset -= coloringSpeed;
trans.colorTransform = colorTrans;
}
else {delete obj.onEnterFrame;}
}
}
function rollOverHandler() {
if (showTitle) this["title"].gotoAndPlay(2);
if (useRollOverColoring) {
setColor(this);
}
}
function rollOutHandler() {
if (showTitle) this["title"].gotoAndStop(1);
if (useRollOverColoring) {
resetColor(this);
}
}
// end rollOver / rollOut colors //
function openURL(obj) {
//navigate to an url if url!=undefined
var setLink = ((obj["info"].attributes.url!=undefined) && (obj["info"].attributes.url!=""));
if (setLink) {
getURL(obj["info"].attributes.url,obj["info"].attributes.window);
}
}
function updateParams() {
// set the rotation direction sign
if (pRight) {
rotdir = -1;
} else if (pLeft) {
rotdir = 1;
} else {
rotdir = 0;
}
//calculate the current rotation speed (degrees)
rotspeed = tween(rotspeed, rotdir*rotspeedmax);
}
function rotationHandler() {
updateParams(); // check direction and current angle speed
if (rotspeed != 0) {
for (var i = 0; i<=nodes.length; i++) {
var instance = "p"+i;
var xAngle = 0;
var yAngle = rotspeed;
var zAngle = 0;
sc.objectRotateAround(instance, "center", xAngle, yAngle, zAngle);
}
}
};
// LEFT BUTTON events //
this._parent.bleft.onPress = function() {
pLeft = true;
this.gotoAndStop(3);
};
this._parent.bleft.onRelease = function() {
pLeft = false;
this.gotoAndStop(1);
};
this._parent.bleft.onReleaseOutside = function() {
pLeft = false;
this.gotoAndStop(1);
};
this._parent.bleft.onRollOver = function() {
this.gotoAndStop(2);
}
this._parent.bleft.onRollOut = function() {
this.gotoAndStop(1);
}
// RIGHT BUTTON events //
this._parent.bright.onPress = function() {
pRight = true;
this.gotoAndStop(3);
};
this._parent.bright.onRelease = function() {
pRight = false;
this.gotoAndStop(1);
};
this._parent.bright.onReleaseOutside = function() {
pRight = false;
this.gotoAndStop(1);
};
this._parent.bright.onRollOver = function() {
this.gotoAndStop(2);
}
this._parent.bright.onRollOut = function() {
this.gotoAndStop(1);
}
//TWEEN METHOD USED IN CALCULATION
function tween(pos1, pos2) {
if (Math.abs(pos2-pos1)<= tweentoleration) {
return pos2;
} else {
return (pos1 + tweendecay*(pos2-pos1));
}
}
//setMirror() -> added May, 21 2008
//targetMc -> target Movie Clip to apply mirror
//mirrorMc -> mirror Movie Clip
//maskMcLinkageId -> mirror gradient mask linkage id mask from the library
function setMirror(targetMc,mirrorMc,maskMcLinkageId) {
mirrorMc._y = targetMc._y + 2*targetMc._height + mirrorOffset;
mirrorMc._yscale = -100;
mirrorMc.cacheAsBitmap = true;
targetMc._parent.attachMovie(maskMcLinkageId,maskMcLinkageId,100);
targetMc._parent[maskMcLinkageId].cacheAsBitmap = true;
targetMc._parent[maskMcLinkageId]._width = mirrorMc._width; //set proper reflexion size
targetMc._parent[maskMcLinkageId]._height = mirrorMc._height*mirrorHeightGaign;
targetMc._parent[maskMcLinkageId]._y = targetMc._y + targetMc._height + mirrorOffset;;
mirrorMc.setMask(targetMc._parent[maskMcLinkageId]);
}
//check if camera exists to prevent loading config.xml before scene.xml
var intervalId;
function checkcamera() {
if (sc.getMc("camera0")) {
//if camera movie clips exists, set objects
init();
clearInterval(intervalId);
}
}
function startcheck() {
intervalId = setInterval(checkcamera, 30);
}
startcheck(); |
|
|
Kommentaarid: 166 loe/lisa |
Kasutajad arvavad: |
   |
:: |
1 :: |
0 :: |
147 |
|
tagasi üles |
|
 |
tanel98
HV kasutaja

liitunud: 04.03.2006
|
26.10.2010 17:10:19
|
|
|
config.xml samasse kausta kus sul swf fail on.
_________________
 |
|
Kommentaarid: 5 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
5 |
|
tagasi üles |
|
 |
idegraaf
HV kasutaja
liitunud: 24.07.2008
|
26.10.2010 18:13:16
|
|
|
Tanel98,failid ongi ju ühes kaustas.
'src', 'http://www.blahblah.com/banners/raamatud/3DRotateCarousel.swf',
'xmlFile', 'http://www.blahblah.com/banners/raamatud/config.xml', |
Võib-olla on abiks ka XML siia näitamiseks panna.
_________________ http://facebook.com/lihtcnc |
|
Kommentaarid: 9 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
8 |
|
tagasi üles |
|
 |
tanel98
HV kasutaja

liitunud: 04.03.2006
|
26.10.2010 18:34:12
|
|
|
Pole mõtet mingit flashvarsi ja keemiat leiutada. Ühte kausta ja sealt edasi arendama.
_________________
 |
|
Kommentaarid: 5 loe/lisa |
Kasutajad arvavad: |
   |
:: |
0 :: |
0 :: |
5 |
|
tagasi üles |
|
 |
|
lisa lemmikuks |
|
|
sa ei või postitada uusi teemasid siia foorumisse sa ei või vastata selle foorumi teemadele sa ei või muuta oma postitusi selles foorumis sa ei või kustutada oma postitusi selles foorumis sa ei või vastata küsitlustele selles foorumis sa ei saa lisada manuseid selles foorumis sa võid manuseid alla laadida selles foorumis
|
|
Hinnavaatlus ei vastuta foorumis tehtud postituste eest.
|