enep
@enep
IT- Ученый

Не работает скрипт?

Вот мой скрипт
$(document).ready(function () {

			function symbol(_char, _dpath) {
				this.char = _char;
				this.path = _dpath;
			}

			var svgfont = [];
			var svgfontweidth = 0;
			var namefont = "";
			var view = SVG("preview")
				.size($("#preview").width(), $("#preview").height());
			function addGlyphToPath(c,d) {
				svgfont.push(new symbol(c,d));
			}
			function setfontweidth(fw) {
				svgfontweidth = fw;
			}
			function caclulate() {
				
			}
			function getPathByChar(sym) {
				console.log("------>"+sym)
				console.log("getPathByChar"+svgfont.length)
				for(var i = 0;i < svgfont.length;i++) {
					if(svgfont[i].char == sym) {
						console.log("------>"+svgfont[i].path)
						return svgfont[i].path;
					}
				}
			}
			function drawString(drawdesc,str) {
				var shift = 5;
				var svggroup = drawdesc.group();
				svggroup.scale(0.03,-0.03).translate(5,55);
				for(var i=0;i<str.length;i++) {
					if(str[i] == " ") {
						shift = shift + (svgfontweidth / 2);
					} else {
						var path = svggroup.path(getPathByChar(str[i])).translate(shift,55);
						console.log(getPathByChar(str[i]));
						shift = shift + path.width();
						drawdesc.add(path);
					}
					
				} 
			}
			var self = this;
			var getSVGPath = function (svgdata) {
				var _this = this;
						setfontweidth(parseInt($(svgdata).find("font-face ").attr('font-weight')));
						$(svgdata).find("glyph").each(function(){ 
							var unicode = $(this).attr('unicode');
							var dpath = $(this).attr("d");
							addGlyphToPath(unicode,dpath);
						})
			}

			function loadfont(self,svgUrl) {
				var _this = self;
				$.ajax({
					type:"get",
					url:svgUrl,
					dataType:"xml",
					success:getSVGPath
	
				})
			}

			function update() {
				var namefont = $("#selFont").val();
				var size = parseInt($("#fontSize").val());
				var type = $("#selType").val();
				var text = $("#node").val();
				
				console.log(namefont);
				loadfont(this,"svgfonts/" + namefont + ".svg");
				drawString(view,text);
				
			}


			update();
			console.log("root"+svgfont.length);
			$("#node").keyup(update);
			$("#selFont").click(function () {
				$(this).bind("change", update);
			});
		});


Мне нужно сохранить в массиве svgfont все glyph'ы
сам svg загружается но не хочить сохраняться в массиве, что бы потом прочитать их

помогите люди добрые
  • Вопрос задан
  • 177 просмотров
Пригласить эксперта
Ответы на вопрос 1
Lobotomist
@Lobotomist
Software Developer
Получение svg у вас асинхронное, а console.log("root"+svgfont.length); вы выводите сразу после update();. В этот момент в массив svgfont еще ничего не помещено.
Если проблема не только в этом - ставьте console.log во все функции и смотрите, что вызывается, в какой последовательности, с какими параметрами. Так вы увидите, что именно работает не так, как вы ожидаете.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
19 апр. 2024, в 17:06
15000 руб./за проект
19 апр. 2024, в 16:53
1000 руб./за проект
19 апр. 2024, в 16:45
5000 руб./за проект